From: Maximiliano Curia Date: Tue, 13 Oct 2026 10:08:50 +0000 (+0200) Subject: Import vtk9_9.6.2+ds-3.debian.tar.xz X-Git-Tag: archive/raspbian/9.6.2+ds-3+rpi1^2~26^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=26cea2e6963a801a8b6feeebfd9363a48460ba17;p=vtk9.git Import vtk9_9.6.2+ds-3.debian.tar.xz [dgit import tarball vtk9 9.6.2+ds-3 vtk9_9.6.2+ds-3.debian.tar.xz] --- 26cea2e6963a801a8b6feeebfd9363a48460ba17 diff --git a/README.source b/README.source new file mode 100644 index 000000000..668fc4edc --- /dev/null +++ b/README.source @@ -0,0 +1,67 @@ +vtk9 for Debian +=============== + +Source Repackaging +------------------ +The upstream source tarball is repacked with the +ds suffix using Files-Excluded +in debian/copyright to drop bundled third-party libraries and prebuilt binaries. + +Build Notes and Concurrency Management +--------------------------------------- +The package builds against all supported Python versions using py3versions -s +and uses guess-concurrency to limit memory usage during parallel compilation. + +VTK 9 includes heavily templated C++ modules (in particular VTK::vtkviskores +on 64-bit architectures, and bulk array instantiations on 32-bit architectures) +where individual translation units can require substantial memory: + - 64-bit architectures: 1 peak worker up to ~6.5 GB, others ~2.0 GB. + - 32-bit architectures: 1 peak worker up to ~2.5 GB, others ~1.1 GB. + +In debian/rules, CONCURRENCY_MEM is configured accordingly: + - 64-bit: CONCURRENCY_MEM = 6.5G,2G + - 32-bit: CONCURRENCY_MEM = 2.5G,1.1G + +guess_concurrency uses these values to calculate an appropriate --max-parallel +argument for debhelper, preventing out-of-memory (OOM) failures or worker aborts +on memory-constrained builders. + +Memory Profiling with debian/memory-tracker.py +---------------------------------------------- +The script debian/memory-tracker.py is provided to measure memory consumption +during the build and calibrate the CONCURRENCY_MEM values for new VTK releases. + +When active, it: + 1. Acts as CMAKE_C_COMPILER_LAUNCHER and CMAKE_CXX_COMPILER_LAUNCHER to track + per-worker peak resident memory (ru_maxrss) and CPU duration across all + translation units. + 2. Samples background cgroup memory, process-tree RSS, and minimum available + RAM throughout dh_auto_build. + 3. Outputs a comprehensive distribution analysis (unweighted per translation + unit and time-weighted per CPU-second) with parametric percentiles + (Mean as p50, Mean + Z*sigma) and empirical sample quantiles directly into + the build log. + 4. Suggests balanced (Mean) and conservative (p75 / p95) arguments for + guess_concurrency --require-mem. + +Disabling for Production Builds (Default) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To avoid the overhead of spawning Python launcher wrappers, file locking, and +monitoring threads during official Debian archive builds (buildd), the memory +tracker is DISABLED by default (TRACK_MEMORY=0). Production builds invoke the +compiler directly with zero extra overhead. + +Enabling for Profiling / Test Builds +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To enable memory tracking on a test build (e.g. on debusine, sbuild, or local): + - Via DEB_BUILD_OPTIONS: + DEB_BUILD_OPTIONS="trackmem" dpkg-buildpackage -b + # or in sbuild: + sbuild --deb-build-options="trackmem" + + - Via make / environment variable: + TRACK_MEMORY=1 dpkg-buildpackage -b + + - Or explicitly in debian/rules by setting TRACK_MEMORY ?= 1. + +To explicitly force disable it even if set in environment: + DEB_BUILD_OPTIONS="notrackmem" diff --git a/changelog b/changelog new file mode 100644 index 000000000..c033311ec --- /dev/null +++ b/changelog @@ -0,0 +1,827 @@ +vtk9 (9.6.2+ds-3) unstable; urgency=medium + + * Team upload. + + [ Dominique Belhachemi ] + * Fix Debian's copyright section + + [ Adrian Bunk ] + * Fix ppc64 and powerpc FTBFS with ppc-constexpr.patch + * debian/rules: Reduce debug info on alpha and sh4 + * debian/rules: drop obsolete libatomic workaround + + [ Maximiliano Curia ] + * debian/rules: Track per-worker and total build memory, tune + guess-concurrency for 32/64-bit architectures + * d/README.source: document use of guess-concurrency and + d/memory-tracker.py + + -- Maximiliano Curia Tue, 13 Oct 2026 12:08:50 +0200 + +vtk9 (9.6.2+ds-2) unstable; urgency=medium + + * Team upload. + * Fix arch-indep FTBFS with multiple supported Python versions, build + only the documentation. + * Build VTK once and rebuild only the Python parts for non-default + Python versions. + * Add Python version suffix to Python-dependent libraries for + non-default Python versions. + + -- Maximiliano Curia Mon, 28 Sep 2026 16:26:34 +0200 + +vtk9 (9.6.2+ds-1) unstable; urgency=medium + + * Team upload. + * New repacked upstream version 9.6.2+ds using +ds suffix. + * Build for all supported python3 versions. + * Use guess-concurrency to limit parallel workers. + * Fix doxygen documentation path for versioned build directory. + * Set writable HOME and XDG_CACHE_HOME for Fontconfig. + * Fix invalid escape sequence in testing.py. (Closes: #1079541, #1142155) + * Backport upstream GLTF security fixes: + - CVE-2025-57106: Fix invalid access in vtkGLTFDocumentLoader. + (Closes: #1119821) + - CVE-2025-57107: Fix invalid access in vtkGLTFDocumentLoader. + (Closes: #1119822) + - CVE-2025-57108: Fix invalid vector access in vtkGLTFImporter. + (Closes: #1119823) + - CVE-2025-57109: Fix invalid access in vtkGLTFImporter. + (Closes: #1119824) + * libvtk9-dev no longer ships uncompilable headers. (Closes: #1035426) + * Disable IOParallelXdmf3 on 32-bit architectures. (Closes: #1126484) + * Update debian/copyright. (Closes: #1140541) + * Fix manpage filenames and install section for wrapper tools. + * Do not install internal h5hut config.h into public headers. + * Fix character encoding in Sequence.h. + * Remove external CDN script reference in GeometryViewer example. + * Deduplicate dependencies in debian/control. + * Drop unused debian/libvtk9-dev.lintian-overrides. + * Register HTML documentation with doc-base. + + -- Maximiliano Curia Fri, 25 Sep 2026 20:30:00 +0200 + +vtk9 (9.6.2+dfsg1-6) unstable; urgency=medium + + + * Team upload. + * Drop unused 121_add_support_for_loong64.patch + * Do not install VTK's bundled FindHDF5.cmake (Closes: #1147167) + + -- Dominique Belhachemi Sat, 12 Sep 2026 09:35:02 -0400 + +vtk9 (9.6.2+dfsg1-5) unstable; urgency=medium + + [ Dominique Belhachemi ] + * Team upload. + * Drop libdouble-conversion-dev build dependency + Upstream removed ThirdParty/doubleconversion in v9.6.0 + * Drop unused 30_drop_medical_example.patch + + [ Francesco Ballarin ] + * Automatically install vtk-{version}.dist-info/METADATA file with minimal + metadata including only the version number, so that a end user running + "pip show vtk" correctly receives the answer that the package is installed + and its version. Closes: #1096135. + + -- Francesco Ballarin Fri, 28 Aug 2026 08:57:41 +0000 + +vtk9 (9.6.2+dfsg1-4) unstable; urgency=medium + + * Team upload. + * debian patch fix_xmlwriter_ascii_implicit_cellarray_segfault.patch + now also writes the cell types instead of only guarding the crash. + The templated writer already returned early on a null iterator, so + the array was written empty and, WriteInlineData() discarding the + return value, ascii .vtu files were silently written without any + cell at all. + * autopkgtest writeVTUAsciiImplicitCellTypes: read the file back and + check the number of cells, the previous version passed on such an + empty types array. + + -- Anton Gladky Tue, 28 Jul 2026 16:20:19 +0200 + +vtk9 (9.6.2+dfsg1-3) unstable; urgency=medium + + * Team upload. + * debian patch fix_xmlwriter_ascii_implicit_cellarray_segfault.patch + fixes segfault writing ascii .vtu files with implicit cell type + arrays, fixing yade FTBFS. + * add autopkgtest writeVTUAsciiImplicitCellTypes covering this bug. + + -- Anton Gladky Mon, 27 Jul 2026 16:37:42 +0200 + +vtk9 (9.6.2+dfsg1-2) unstable; urgency=medium + + * Team upload + * upload vtk 9.6 to unstable (transition #1141369) + + -- Drew Parsons Tue, 14 Jul 2026 11:40:34 +0200 + +vtk9 (9.6.2+dfsg1-1exp5) experimental; urgency=medium + + * Team upload. + * install vtkQImageToImageSource.h and vtkQWidget* headers to + libqt9-qt-dev not libqt9-dev. See Bug#1035426. + * debian patch build_reproducibility.patch maintains build + reproducibility by dropping XDMF_SYSTEM (which is set to + CMAKE_SYSTEM, including the Linux version at build time) from + XdmfConfig.h in xdmf2 headers. XDMF_SYSTEM is not actually used by + the code. Closes: #1120818 + * fix contents of debian/python3-vtk9.pydist + + -- Drew Parsons Thu, 02 Jul 2026 00:30:08 +0200 + +vtk9 (9.6.2+dfsg1-1exp4) experimental; urgency=medium + + * Team upload. + * debian/rules: run manual dh_install to install viskores.pc before + deleting excess files from libvtk9-dev, otherwise Qt files + (intended for libvtk9-qt-dev) get reinstalled + + -- Drew Parsons Fri, 26 Jun 2026 14:07:31 +0200 + +vtk9 (9.6.2+dfsg1-1exp3) experimental; urgency=medium + + * Team upload. + * list viskores.pc in debian/not-installed to work around Bug#972222 + in debhelper. viskores.pc is not built on 32-bit systems + and so is installed conditionally to libvtk9-dev in debian/rules. + This non-installed entry is needed for arch-independent builds. + + -- Drew Parsons Thu, 25 Jun 2026 18:24:31 +0200 + +vtk9 (9.6.2+dfsg1-1exp2) experimental; urgency=medium + + * Team upload. + * install viskores.pc to libvtk9-dev conditionally: + viskores does not build on 32-bit arches + * debian/tests: #include in tests using std::cout + + -- Drew Parsons Tue, 23 Jun 2026 09:26:05 +0200 + +vtk9 (9.6.2+dfsg1-1exp1) experimental; urgency=medium + + * Team upload. + * New upstream release. New ABI 9.6 + - applies debian patches 40_viskores.patch, + findEXPAT_version_fix_MR12826.patch, + numpy_drop_in1d_MR12693.patch + - provides vtkWrapJavaScript-9.6 executable (in vtk9 package) + and pkgconfig file for viskores (in libvtk9-dev) + - replaces ThirdParty/h5part with ThirdParty/h5hut + (still licensed with BSD-3-clause-notice-2) + * provide debian/python3-vtk9.pydist to declare python3-vtk9 as + python package vtk. Closes: #1096135 + * Depends: libmariadb-dev rather than default-libmysqlclient-dev + mariaDB has sufficiently evolved from mySQL to stop claiming + compatibility. Note that VTK9 nevertheless still treats mariaDB as + a substitute for mySQL. Activate SQL support by configuring modules + IO::SQL and IO::MySQL. Interface with QtSQL with GUISupportQtSQL=YES + Closes: #1137152 + * Build-Depends: libpq-dev and configure IO::PostgreSQL module + to activate PostgreSQL support + * use external exprtk (VTK_MODULE_USE_EXTERNAL_VTK_exprtk:BOOL=ON) + Build-Depends: libexprtk-dev. Closes: #1094438 + debian/copyright: Files-Excluded: ThirdParty/exprtk/vtkexprtk + * drop patch version from name of manpages + * libvtk9.6-qt: drop redundant Breaks: Provides: Replaces: libvtk9.1-qt + + -- Drew Parsons Sun, 21 Jun 2026 13:43:43 +0200 + +vtk9 (9.5.2+dfsg4-5) unstable; urgency=medium + + * Team upload. + * debian patch numpy_drop_in1d_MR12693.patch applies upstream + MR#12693 to remove numpy.in1d, no longer provided by numpy 1.24 + (use numpy.isin instead). Closes: #1137015 + * Standards-Version: 4.7.4 + + -- Drew Parsons Mon, 25 May 2026 21:11:13 +0200 + +vtk9 (9.5.2+dfsg4-4) unstable; urgency=medium + + * Team upload. + * mark libvtk9-dev as Multi-Arch: no, not Multi-Arch: same + since some header files contain arch-dependent definitions + (vtkOptions.h, vtkEndian.h, cgnstypes.h, XdmfConfig.h setting + endianness, int size, etc). Closes: #1133759 + Consequently drop Multi-Arch: same from libvtk9-qt-dev + to avoid including inconsistent header definitions + * debian patch gdal-3.13.patch enables build with gdal 3.13. + Thanks Bas Couwenberg. Closes: #1134162 + + -- Drew Parsons Fri, 08 May 2026 14:41:38 +0200 + +vtk9 (9.5.2+dfsg4-3) unstable; urgency=medium + + * [07276b5] Relax upstream boost version in substvars. (Closes: #1130578) + + -- Anton Gladky Mon, 16 Mar 2026 06:12:29 +0100 + +vtk9 (9.5.2+dfsg4-2) unstable; urgency=medium + + * [7f37aac] Add versioned libboost-dev dependency. + (Closes: #1129768, #1129770, #1129773) + * [1f682b2] Remove Priority and RRR fields + + -- Anton Gladky Tue, 10 Mar 2026 06:07:36 +0100 + +vtk9 (9.5.2+dfsg4-1) unstable; urgency=medium + + * Team upload. + * Add back WebCore, WebGLExporter and WebPython modules for future use + within trame and pyvista. + - This required a repack 9.5.2+dfsg4, because the Web directory was + previously ignored in d/copyright. + + -- Francesco Ballarin Tue, 03 Mar 2026 18:23:44 +0000 + +vtk9 (9.5.2+dfsg3-8) unstable; urgency=medium + + * Team upload. + * sh4: override dh_dwz to not process libvtkCommonCore + which fails with "Cannot allocate memory" + + -- Drew Parsons Sat, 21 Feb 2026 11:59:19 +0100 + +vtk9 (9.5.2+dfsg3-7) unstable; urgency=medium + + * Team upload. + * add hurd-amd64 to list of architectures supporting adios2 + in Build-Depends: libadios2-mpi-c++-dev + (adios2 now builds on all 64-bit architectures) + * update debian/watch to v5 format. Use GitLab template rather than + GitHub since upstream development happens at + https://gitlab.kitware.com/vtk/vtk + https://github.com/Kitware/VTK is just a mirror of the gitlab repo. + + -- Drew Parsons Sun, 15 Feb 2026 19:34:42 +0100 + +vtk9 (9.5.2+dfsg3-6) unstable; urgency=medium + + * Team upload. + * debian patch matplotlib_nullptr_s390x.patch handles case of null + ScalarPointer in image in vtkMatplotlibMathTextUtilities::RenderOneCell + A null pointer was generated on s390x causing pyvista + test_add_text_latex to segfault. Closes: #1126861 + * add alpha to list of ADIOS2-supporting arches in + Build-Depends: libadios2-mpi-c++-dev + + -- Drew Parsons Thu, 05 Feb 2026 20:55:34 +0100 + +vtk9 (9.5.2+dfsg3-5) unstable; urgency=medium + + * Team upload. + * debian patch findEXPAT_version_fix_MR12826.patch applies upstream + MR#12826 to fix expat version handling. Closes: #1050506 + * 9.5.2+dfsg3-3 disabled viskores on 32-bit arches, since + ParaView::RemotingViews optionally uses VTK::vtkviskores + but (ThirdParty) viskores exhausts virtual memory on 32-bit arches + * disable viskores on alpha, which is 64-bit but also exceeds + available memory + + -- Drew Parsons Thu, 05 Feb 2026 11:39:23 +0100 + +vtk9 (9.5.2+dfsg3-4) unstable; urgency=medium + + * Team upload. + * debian/rules: use UPSTREAM_VERSION_ABI (currently 9.5) to refer to + version specific library (i.e. libvtk9.5) to fix handling of Qt modules + + -- Drew Parsons Wed, 28 Jan 2026 12:53:25 +0100 + +vtk9 (9.5.2+dfsg3-3) unstable; urgency=medium + + * Team upload. + * build docs in arch-indepedent build only + * remove version-specific references from debian/rules + + -- Drew Parsons Wed, 28 Jan 2026 10:04:53 +0100 + +vtk9 (9.5.2+dfsg3-2) unstable; urgency=medium + + * Team upload. + * extra VTK modules support paraview. Closes: #1100766 + * don't configure xdmf3 (i.e. IOParallelXdmf3) on 32-bit arches, + where vtk's copy of xdmf3 fails to build. See Bug#1126484 + (upstream paraview Issue #22630) + * enable RenderingFreeTypeFontConfig. Closes: #1101916 + * build docs in arch-independent build only. Closes: #1125140 + Move doc generating packages doxygen-latex, ghostscript, + gnuplot-nox, graphviz to Build-Depends-Indep . + * escape sequences in vtkMethodParser.py are fixed. Closes: #1079541 + * Standards-Version: 4.7.3 + + -- Drew Parsons Wed, 28 Jan 2026 04:41:09 +0100 + +vtk9 (9.5.2+dfsg3-1) unstable; urgency=medium + + * Team upload. + * enable modules required by paraview 6 + (use IOParallelXdmf3 for IOXdmf3) + - enable VTK::xmdf3 (ThirdParty/xdmf3). Drop from Files-Excluded in + debian/copyright. Bump repacked version to dfsg3 to add xdmf3 + * add support for IOADIOS2 (used by paraview). 64-bit arches only. + Build-Depends: libadios2-mpi-c++-dev [amd64 arm64 mips64el ppc64el + riscv64 s390x loong64 ppc64 sparc64] + * set HDF5_PREFER_PARALLEL=YES (with HDF5_IS_PARALLEL=ON) to + activate parallel HDF5 (via libhdf5-mpi-dev) + * Build-Depends: libxcursor-dev (enables custom cursors) + + -- Drew Parsons Tue, 27 Jan 2026 00:24:26 +0100 + +vtk9 (9.5.2+dfsg2-4) unstable; urgency=medium + + * Team upload + * Enable VTK external rendering with SDL, GLFW, etc. + + -- Dominique Belhachemi Mon, 27 Oct 2025 14:54:02 -0400 + +vtk9 (9.5.2+dfsg2-3) unstable; urgency=medium + + * Team upload + * Fix vtk9-doc FTBFS + + -- Dominique Belhachemi Thu, 23 Oct 2025 20:23:59 -0400 + +vtk9 (9.5.2+dfsg2-2) unstable; urgency=medium + + * Team upload + * Fix manpages suffix + + -- Dominique Belhachemi Thu, 23 Oct 2025 14:27:19 -0400 + +vtk9 (9.5.2+dfsg2-1) unstable; urgency=medium + + * Team upload + * New upstream release 9.5.2+dfsg2 + * Keep embedded viskores and scn sources + * Exclude embedded nlohmannjson/vtknlohmannjson sources + * d/copyright: Update files and licenses + * Raise minimum Java version from 8 to 11 (javac --release 11) + * Add nlohmann-json3-dev dependency + * Add PPC64 patch + * Lower optimization to -O1 on alpha to fix FTBFS + * Bump Standards-Version to 4.7.2 + * Drop outdated patches + * Remove hardcoded compiler flags + * Update man pages + * Switch to Qt6 + + -- Dominique Belhachemi Mon, 13 Oct 2025 12:11:48 -0400 + +vtk9 (9.5.2+dfsg2-1~exp4) experimental; urgency=medium + + * Team upload + * Raise minimum Java version from 8 to 11 (javac --release 11) + * Add nlohmann-json3-dev dependency + + -- Dominique Belhachemi Wed, 01 Oct 2025 17:16:45 -0400 + +vtk9 (9.5.2+dfsg2-1~exp3) experimental; urgency=medium + + * Team upload + * Add PPC64 patch + * Lower optimization to -O1 on alpha to fix FTBFS + + -- Dominique Belhachemi Tue, 30 Sep 2025 12:20:57 -0400 + +vtk9 (9.5.2+dfsg2-1~exp2) experimental; urgency=medium + + * Team upload + * Disable 16 ParaView-only modules causing FTBFS + * Switch to Qt6 + + -- Dominique Belhachemi Sun, 28 Sep 2025 17:18:52 -0400 + +vtk9 (9.5.2+dfsg2-1~exp1) experimental; urgency=medium + + * Team upload + * New upstream version 9.5.2+dfsg2 + * Do not exclude embedded viskores and scn sources + * Exclude embedded nlohmannjson/vtknlohmannjson sources + * Enable 16 additional modules for ParaView + * Switch back from Qt6 to Qt5 + + -- Dominique Belhachemi Thu, 25 Sep 2025 12:06:18 -0400 + +vtk9 (9.5.2+dfsg1-1~exp1) experimental; urgency=medium + + * Team upload. + * New upstream version 9.5.2+dfsg1 + * d/copyright: Update files and licenses + * Add nlohmann-json3-dev dependency + * Drop outdated patches + * Remove hardcoded compiler flags + * Raise minimum Java version from 8 to 17 (javac --release 17) + * Bump Standards-Version to 4.7.2 + * Switch from Qt5 to Qt6 + + -- Dominique Belhachemi Tue, 23 Sep 2025 16:48:13 -0400 + +vtk9 (9.3.0+dfsg1-7) unstable; urgency=medium + + * Non-maintainer upload + * Remove obsolete libosmesa6-dev dependency. (Closes: #1113920) + * Remove obsolete tcl-dev and tk-dev dependency. + * Remove r-base dependency + * Apply upstream patch to fix gcc-15 FTBFS issue (Closes: #1111572) + * Remove obsolete libftgl-dev dependency + + -- Dominique Belhachemi Thu, 04 Sep 2025 14:06:08 -0400 + +vtk9 (9.3.0+dfsg1-6) unstable; urgency=medium + + * Team upload. + * Remove obsolete libmrmpi-dev dependency. + + -- Bastian Germann Mon, 01 Sep 2025 17:22:13 +0200 + +vtk9 (9.3.0+dfsg1-5) unstable; urgency=medium + + * Team upload. + [ Adrian Bunk ] + * Apply patch from Samuel Thibault to disable Java and TBB on Hurd. + Closes: #1094994. + * Make TBB architecture settings consistent. + * Remove handling of removed kfreebsd. + + -- Santiago Vila Fri, 22 Aug 2025 13:20:00 +0200 + +vtk9 (9.3.0+dfsg1-4) unstable; urgency=medium + + * Team upload. + * Replace _FillValue by NC_FillValue for NetCDF 4.9.3. (Closes: #1095478) + + -- Bastian Germann Sat, 15 Feb 2025 13:13:19 +0000 + +vtk9 (9.3.0+dfsg1-3) unstable; urgency=medium + + * [a52f6c5] Fix segfault on python 3.13. (Closes: #1092354) + + -- Anton Gladky Tue, 28 Jan 2025 21:40:49 +0100 + +vtk9 (9.3.0+dfsg1-2) unstable; urgency=medium + + * Team upload. + * Drop Depends: libqt5webkit5-dev. + + -- Bastian Germann Thu, 23 Jan 2025 08:49:29 +0100 + +vtk9 (9.3.0+dfsg1-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Build against libhdf5-mpi-dev, since libhdf5-openmpi-dev is no longer + available on 32-bit architectures. Closes: #1078743. + + -- Emilio Pozuelo Monfort Fri, 22 Nov 2024 11:49:45 +0100 + +vtk9 (9.3.0+dfsg1-1) unstable; urgency=medium + + * Team upload. + + [ Michael R. Crusoe ] + * Build the IO/GeoJSON module. Closes: #1029285 + To the binary package libvtk9.1t64, this adds + /usr/lib/${DEB_HOST_MULTIARCH}/libvtkIOGeoJSON-9.1.so.9.1.0 + /usr/lib/${DEB_HOST_MULTIARCH}/vtk/hierarchy/VTK/vtkIOGeoJSON-hierarchy.txt + /usr/lib/${DEB_HOST_MULTIARCH}/libvtkIOGeoJSON-9.1.so.1 + To the binary package libvtk9-dev, this adds + /usr/include/vtk-9.1/vtkGeoJSONFeature.h + /usr/include/vtk-9.1/vtkGeoJSONReader.h + /usr/include/vtk-9.1/vtkGeoJSONWriter.h + /usr/include/vtk-9.1/vtkIOGeoJSONModule.h + /usr/lib/${DEB_HOST_MULTIARCH}/libvtkIOGeoJSON-9.1.so + To the binary package libvtk9-java, this adds + /usr/lib/${DEB_HOST_MULITARCH}/java/vtk-Linux-${DEB_HOST_GNU_CPU} + /libvtkIOGeoJSONJava.so + To the binary package python3-vtk9, this adds + /usr/lib/python3/dist-packages/vtkmodules + /vtkIOGeoJSON.cpython-311-${DEB_HOST_GNU_CPU}.so + + [ Anton Gladky ] + * Upload of new version 9.3 into unstable. + + -- Anton Gladky Thu, 06 Jun 2024 21:34:35 +0200 + +vtk9 (9.1.0+really9.1.0+dfsg2-8) unstable; urgency=medium + + [ Bo YU ] + * Team upload. + * Add support for loongarch64. Thanks to Dandan Zhang + . (Closes: #1054471) + + [ Michael R. Crusoe ] + * Cherry-pick patch from upstream to fix issue with newer expat and + appended data. Closes: #1064762 + * d/control: build-dep on libhdf5-mpi-dev instead of libhdf5-openmpi- + dev. Closes: #1068321 + * Cherry-pick patch from upstream to fix CVE-2021-42521. Closes: + #1031877. + * Fix Maintainer name of Debian Science team (routine-update) + * Remove trailing whitespace in debian/copyright (routine-update) + * d/control: Updated some dependencies on obsolete or supercede packages + names. + + -- Michael R. Crusoe Mon, 29 Apr 2024 16:16:28 +0200 + +vtk9 (9.1.0+really9.1.0+dfsg2-7.1) unstable; urgency=medium + + * Non-maintainer upload. + * Rename libraries for 64-bit time_t transition. Closes: #1063267 + + -- Steve Langasek Wed, 28 Feb 2024 23:38:25 +0000 + +vtk9 (9.3.0+dfsg1-1~exp4) experimental; urgency=medium + + * [43fb8c1] Add libgl2ps-dev as depends. + + -- Anton Gladky Sat, 20 Jan 2024 19:57:32 +0100 + +vtk9 (9.3.0+dfsg1-1~exp3) experimental; urgency=medium + + * [2767f12] Add missing GL-header. + + -- Anton Gladky Wed, 10 Jan 2024 22:17:01 +0100 + +vtk9 (9.3.0+dfsg1-1~exp2) experimental; urgency=medium + + * [ad5a07d] Update build-depends. + + -- Anton Gladky Tue, 09 Jan 2024 19:54:16 +0100 + +vtk9 (9.3.0+dfsg1-1~exp1) experimental; urgency=medium + + [ Bas Couwenberg ] + * Team upload. + * Merge GCC 13 changes from 9.1.0+really9.1.0+dfsg2-7. + (closes: #1037887) + + [ Anton Gladky ] + * [69b4a61] Update copyright + * [d5dfcaf] New upstream version 9.3.0+dfsg1 + * [5e949d9] Update binariries to vtk9.3 + * [7c9a9bf] Update patches + + -- Anton Gladky Fri, 05 Jan 2024 06:57:20 +0100 + +vtk9 (9.2.6+dfsg1-1+exp2) experimental; urgency=medium + + * Team upload. + * Merge changes from 9.1.0+really9.1.0+dfsg2-6. + * Add license paragraph for public-domain license. + + -- Bas Couwenberg Thu, 22 Jun 2023 13:22:18 +0200 + +vtk9 (9.2.6+dfsg1-1+exp1) experimental; urgency=medium + + * [965a45d] New upstream version 9.2.6+dfsg1 + + -- Anton Gladky Sat, 25 Mar 2023 15:34:05 +0100 + +vtk9 (9.1.0+really9.1.0+dfsg2-7) unstable; urgency=medium + + * Team upload. + * Cherry-pick patch from upstream to fix FTBFS with gcc-13. + (Closes: #1037887) + + -- Michael R. Crusoe Tue, 22 Aug 2023 00:27:20 +0200 + +vtk9 (9.1.0+really9.1.0+dfsg2-6) unstable; urgency=medium + + * Team upload. + * Don't use netcdf-cxx-legacy. + (closes: #1038614) + + -- Bas Couwenberg Thu, 22 Jun 2023 07:14:50 +0200 + +vtk9 (9.1.0+really9.1.0+dfsg2-5) unstable; urgency=medium + + [ Elvis Stansvik ] + * [a408ad0] Add upstream fix for shader crash with multivolume + + [ Adrian Bunk ] + * [ab960ac] Build without libtbb also on alpha and ia64 + + [ Anton Gladky ] + * [be1ea19] Set upstream metadata fields: Bug-Database, Bug-Submit. + * [f5599c7] Update standards version to 4.6.2, no changes needed. + + -- Anton Gladky Sat, 25 Feb 2023 09:59:35 +0100 + +vtk9 (9.1.0+really9.1.0+dfsg2-4) unstable; urgency=medium + + * [b05b21f] Fix FTBFS against NETCDF>4.9.0. (Closes: #1012703) + + -- Anton Gladky Sun, 19 Jun 2022 16:25:33 +0200 + +vtk9 (9.1.0+really9.1.0+dfsg2-3) unstable; urgency=medium + + * Upload into unstable. + + -- Anton Gladky Fri, 21 Jan 2022 21:24:01 +0100 + +vtk9 (9.1.0+really9.1.0+dfsg2-3~exp2) experimental; urgency=medium + + [ Adrian Bunk ] + * [33b75d5] Restore the 83_allow_gles_platforms.patch hack for Qt with OpenGL ES + * [b243b24] HACK: vtkQWidgetTexture.cxx: Don't use vtkOpenGLCheckErrorMacro + + [ Anton Gladky ] + * [4449d7a] Add missing Breaks+Replaces to libvtk9. (Closes: #1002063) + + -- Anton Gladky Wed, 19 Jan 2022 22:40:05 +0100 + +vtk9 (9.1.0+really9.1.0+dfsg2-3~exp1) experimental; urgency=medium + + * [948c358] Update package names due to so-version changes + + -- Anton Gladky Mon, 29 Nov 2021 22:26:25 +0100 + +vtk9 (9.1.0+really9.0.3+dfsg1-4) unstable; urgency=medium + + * [90cbc11] vtkFreeTypeTools: avoid using an internal macro. + (Closes: #1000746) + * [9e418ba] Use python3-dev in BD + + -- Anton Gladky Sun, 28 Nov 2021 23:34:47 +0100 + +vtk9 (9.1.0+really9.0.3+dfsg1-3) unstable; urgency=medium + + * Upload previous version to fix unstable. (Closes: #1000611) + + -- Anton Gladky Sat, 27 Nov 2021 21:27:37 +0100 + +vtk9 (9.1.0+dfsg2-2) unstable; urgency=medium + + * [dda0c55] Fix FTBFS on build-any + + -- Anton Gladky Wed, 24 Nov 2021 21:43:24 +0100 + +vtk9 (9.1.0+dfsg2-1) unstable; urgency=medium + + [ Anton Gladky ] + * [d2a3591] Drop Thirdparty/fides from the source + * [2f0d373] Fix lintian warnings + * [7169c10] Remove unused patches + * [a51ec5a] Fix manpages + * [e941542] Fix dependencies. (Closes: #998470, #1000501) + * [5c49e03] New upstream version 9.1.0+dfsg2 + + [ Samuel Thibault ] + * [82b2737] Disable libtbb-dev build-dep on !linux. (Closes: #996257) + + -- Anton Gladky Wed, 24 Nov 2021 18:07:18 +0100 + +vtk9 (9.1.0+dfsg1-1) unstable; urgency=medium + + * [5442030] New upstream version 9.1.0+dfsg1 + * [1ee83fe] Fix compilation + + -- Anton Gladky Tue, 23 Nov 2021 20:17:56 +0100 + +vtk9 (9.0.3+dfsg1-3) unstable; urgency=medium + + * Team upload. + * Add upstream patch to include (Closes: #984399) + * Bump Java source/target versions (Closes: #981974) + * Add upstream patch for proj>=5 api (Closes: #983299) + * Use dh-sequencers + * Use execute_after_ of dh + * Add Multi-Arch hints from the MA hinter + * Bump policy versions (no changes) + + -- Jochen Sprickerhof Tue, 12 Oct 2021 10:21:32 +0200 + +vtk9 (9.0.3+dfsg1-2) unstable; urgency=medium + + * [ccb2b2e] Remove gitlab-ci + * [7e35e50] Add libtbb-dev as depends + + -- Anton Gladky Sat, 18 Sep 2021 08:10:15 +0200 + +vtk9 (9.0.3+dfsg1-1) unstable; urgency=medium + + [ Adrian Bunk ] + * [f635946] Bump the libgl2ps-dev build dependency to >= 1.4.1 + + [ Francois Mazen ] + * [91a8c79] Set TBB as SMP backend. + + [ Anton Gladky ] + * [3116116] New upstream version 9.0.3+dfsg1 + * [6bce9b2] Compile with MPI + * [991e8b0] Apply cme fix dpkg + * [b64d990] Add .gitlab-ci.yml + + -- Anton Gladky Fri, 17 Sep 2021 22:14:11 +0200 + +vtk9 (9.0.1+dfsg1-8) unstable; urgency=medium + + [ Samuel Thibault ] + * [e2a0f2b] Fix java dep on non-java ports. (Closes: #980125) + + -- Anton Gladky Thu, 14 Jan 2021 21:36:46 +0100 + +vtk9 (9.0.1+dfsg1-7) unstable; urgency=medium + + * [cab8734] Enable some more modules + + -- Anton Gladky Thu, 07 Jan 2021 19:43:49 +0100 + +vtk9 (9.0.1+dfsg1-6) unstable; urgency=medium + + [ Samuel Thibault ] + * [7027348] Fix FTBFS on hurd-i386 and non-java ports. (Closes: #978659) + + [ Vagrant Cascadian ] + * [7a3a0e0] Make vtk9 build-reproducible. (Closes: #977522, #977521) + + [ Anton Gladky ] + * [a341c32] Enable RenderingContextOpenGL2. (Closes: #979073) + + -- Anton Gladky Mon, 04 Jan 2021 22:12:05 +0100 + +vtk9 (9.0.1+dfsg1-5) unstable; urgency=medium + + [ Adrian Bunk ] + * [06163ff] Fixes and workaround for platforms where Qt uses OpenGL ES + + [ Anton Gladky ] + * [3e6d9ec] Ignore quilt dir + * [294ca1e] Revert "Do not build qt on some (GLES) archs" + + -- Anton Gladky Sun, 13 Dec 2020 12:55:42 +0100 + +vtk9 (9.0.1+dfsg1-4) unstable; urgency=medium + + * [b80e4ab] Do not build qt on some (GLES) archs + + -- Anton Gladky Sun, 13 Dec 2020 12:14:22 +0100 + +vtk9 (9.0.1+dfsg1-3) unstable; urgency=medium + + [ Adrian Bunk ] + * [52af841] Revert "Link against latomic" + * [381ea98] Link with libatomic on archtectures that need it + + [ Anton Gladky ] + * [a983346] 80_allow_gles_platforms.patch. + * [e79137e] Fix FTBFS against freetype 2.10.4. (Closes: #976975) + * [d7ecb86] Add python3-vtk9 as Breaks+Replaces: python3-paraview. + (Closes: #976127) + * [19fe54e] Update changelog. + + -- Anton Gladky Thu, 10 Dec 2020 17:33:59 +0100 + +vtk9 (9.0.1+dfsg1-2) unstable; urgency=medium + + * [3afb408] Fix autopkgtests + * [8c41fa9] Minor fix in d/copyright + + -- Anton Gladky Wed, 25 Nov 2020 21:50:59 +0100 + +vtk9 (9.0.1+dfsg1-1) unstable; urgency=medium + + * [6b297c8] Link against latomic + * Upload into unstable + + -- Anton Gladky Thu, 19 Nov 2020 19:59:45 +0100 + +vtk9 (9.0.1+dfsg1-1~exp6) experimental; urgency=medium + + * [751a92f] Remove Qt-files from non-qt binaries. (Closes: #974923) + + -- Anton Gladky Mon, 16 Nov 2020 21:39:46 +0100 + +vtk9 (9.0.1+dfsg1-1~exp5) experimental; urgency=medium + + * [21adbaf] Fix FTBFS + * [4326c39] Sort build-dependencies + + -- Anton Gladky Sun, 15 Nov 2020 08:47:31 +0100 + +vtk9 (9.0.1+dfsg1-1~exp4) experimental; urgency=medium + + * [0be2017] Drop Build-Depends-Arch: + + -- Anton Gladky Fri, 13 Nov 2020 23:29:02 +0100 + +vtk9 (9.0.1+dfsg1-1~exp3) experimental; urgency=medium + + * [e5cfe7f] Move javahelper to BD + + -- Anton Gladky Fri, 13 Nov 2020 22:53:27 +0100 + +vtk9 (9.0.1+dfsg1-1~exp2) experimental; urgency=medium + + * [cedb51e] Fix FTBFS on -any arch + + -- Anton Gladky Fri, 13 Nov 2020 16:07:58 +0100 + +vtk9 (9.0.1+dfsg1-1~exp1) experimental; urgency=medium + + * Initial release. (Closes: #974165) + + -- Anton Gladky Tue, 10 Nov 2020 22:12:50 +0100 diff --git a/control b/control new file mode 100644 index 000000000..93b1f9feb --- /dev/null +++ b/control @@ -0,0 +1,267 @@ +Source: vtk9 +Maintainer: Debian Science Maintainers +Uploaders: Anton Gladky , + Gert Wollny , + Nico Schlömer +Section: graphics +Build-Depends: dpkg-dev (>= 1.22.5), + chrpath, + cmake, + debhelper-compat (= 13), + default-jdk [!hppa !hurd-any], + libmariadb-dev, + dh-sequence-python3, + guess-concurrency, + hdf5-tools, + dh-sequence-javahelper, + libalglib-dev, + javahelper, + libboost-dev, + libadios2-mpi-c++-dev [amd64 arm64 loong64 mips64el ppc64el riscv64 s390x alpha hurd-amd64 ppc64 sparc64], + libavcodec-dev, + libavformat-dev, + libavutil-dev, + libdigest-md5-perl, + libeigen3-dev, + libexpat-dev, + libexprtk-dev, + libfontconfig-dev, + libfreetype-dev, + libgdal-dev, + libgl-dev, + libgl2ps-dev, + libglew-dev, + libglu-dev, + libhdf5-mpi-dev, + libhpdf-dev, + libjpeg-dev, + libjs-mathjax, + libjsoncpp-dev, + liblz4-dev, + libnetcdf-dev (>= 1:4.9.0), + libogg-dev, + libpng-dev, + libpq-dev, + libproj-dev, + libsqlite3-dev, + libswscale-dev, + libtbb-dev [linux-any], + libtheora-dev, + libtiff-dev, + libutfcpp-dev, + libx11-dev, + libxcursor-dev, + libxdmf-dev, + libxml2-dev, + libxpm-dev, + libxt-dev, + lzma, + nlohmann-json3-dev, + mpi-default-dev, + pkgconf, + python3-all-dev, + python3-matplotlib, + python3-mpi4py, + qt6-base-dev, + texlive-binaries, + x11proto-core-dev, + xauth, + xvfb, + zlib1g-dev, + sqlite3 +Build-Depends-Indep: doxygen-latex , + ghostscript , + gnuplot-nox , + graphviz +Standards-Version: 4.7.4 +Vcs-Browser: https://salsa.debian.org/science-team/vtk9 +Vcs-Git: https://salsa.debian.org/science-team/vtk9.git +Homepage: https://www.vtk.org/ + +Package: libvtk9-dev +Architecture: any +Section: libdevel +Depends: ${misc:Depends}, + ${shlibs:Depends}, + default-jdk [!hppa !hurd-any], + libmariadb-dev, + ${boost:Depends}, + libavcodec-dev, + libavformat-dev, + libavutil-dev, + libc6-dev, + libeigen3-dev, + libexpat-dev, + libfreetype-dev, + libgdal-dev, + libgl-dev, + libgl2ps-dev, + libglew-dev, + libglu1-mesa-dev | libglu-dev, + libhdf5-mpi-dev, + libjpeg-dev, + libjsoncpp-dev, + liblz4-dev, + libnetcdf-dev, + libpng-dev, + libpq-dev, + libproj-dev, + libpython3-dev, + libswscale-dev, + libtbb-dev [linux-any], + libtheora-dev, + libtiff-dev, + libutfcpp-dev, + libvtk9.6 (= ${binary:Version}), + libvtk9-java (= ${binary:Version}) [!hppa !hurd-any], + libx11-dev, + libxcursor-dev, + libxft-dev, + libxml2-dev, + libxss-dev, + libxt-dev, + nlohmann-json3-dev, + mpi-default-dev, + python3-vtk9 (= ${binary:Version}), + vtk9 (= ${binary:Version}), + x11proto-core-dev, + zlib1g-dev +Suggests: vtk9-doc, + vtk9-examples +Description: VTK header files + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides the VTK header files required to compile + C++ programs that use VTK to do 3D visualisation. + +Package: libvtk9.6 +Architecture: any +Multi-Arch: same +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Suggests: mpi-default-bin, + vtk9-doc, + vtk9-examples +Breaks: libvtk9.1 (<< ${source:Version}), + libvtk9 (<< 9.1.0+really9.1.0) +Provides: ${t64:Provides} +Replaces: libvtk9.1, + libvtk9 (<< 9.1.0+really9.1.0) +Description: VTK libraries + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides the shared libraries needed to run C++ programs + that use VTK. + +Package: libvtk9-java +Architecture: amd64 arm64 armel armhf i386 loong64 mips64el mipsel ppc64el s390x alpha ia64 m68k powerpc ppc64 riscv64 sh4 sparc64 x32 +Section: java +Depends: ${java:Depends}, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Suggests: java-virtual-machine, + libvtk9-dev (= ${binary:Version}), + vtk9-doc, + vtk9-examples +Description: VTK - Java language support + The Visualization Toolkit (VTK) is an object oriented, high level + library that allows one to easily write C++ programs, Python and + Java scripts that do 3D visualization. + . + This package provides the VTK Java language support. + +Package: python3-vtk9 +Architecture: any +Section: python +Depends: libvtk9.6 (= ${binary:Version}), + python3-mpi4py, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Suggests: mayavi2, + vtk9-doc, + vtk9-examples +Breaks: python3-vtk6, + python3-vtk7 +Replaces: python3-vtk6, + python3-vtk7 +Description: Python bindings for VTK + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides the python3 bindings for VTK. + +Package: vtk9 +Architecture: any +Section: interpreters +Depends: libvtk9.6 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: vtk9-doc, + vtk9-examples +Description: Binaries for VTK9 + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides binaries for VTK9 + +Package: vtk9-doc +Architecture: all +Section: doc +Depends: doc-base, + libjs-jquery, + libjs-mathjax, + ${misc:Depends} +Suggests: libvtk9-dev, + vtk9-examples +Description: VTK class reference documentation + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides documentation for VTK9 + +Package: vtk9-examples +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Suggests: libvtk9-dev, + python3, + python3-vtk9, + vtk9-doc +Description: VTK examples + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides examples for VTK9 + +Package: libvtk9.6-qt +Architecture: any +Multi-Arch: same +Section: libs +Depends: ${misc:Depends}, + ${shlibs:Depends} +Description: VTK libraries, Qt files + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides the shared libraries needed to run C++ programs + that use VTK. Qt files + +Package: libvtk9-qt-dev +Architecture: any +Section: libdevel +Depends: libvtk9-dev (= ${binary:Version}), + libvtk9.6-qt (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends}, + qt6-base-dev, +Description: VTK header files, containing Qt files + The Visualization Toolkit (VTK) is an open-source software system + for 3D computer graphics, image processing, and visualization. + . + This package provides the VTK header files required to compile + C++ programs that use VTK to do 3D visualisation. Qt files diff --git a/copyright b/copyright new file mode 100644 index 000000000..149eb1c21 --- /dev/null +++ b/copyright @@ -0,0 +1,677 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: https://www.vtk.org/ +Upstream-Name: Visualization Toolkit +Files-Excluded: + ThirdParty/eigen/vtkeigen + ThirdParty/expat/vtkexpat + ThirdParty/exprtk/vtkexprtk + ThirdParty/fides + ThirdParty/freetype/vtkfreetype + ThirdParty/gl2ps/vtkgl2ps + ThirdParty/hdf5/vtkhdf5 + ThirdParty/jpeg/vtkjpeg + ThirdParty/jsoncpp/vtkjsoncpp + ThirdParty/libproj/vtklibproj + ThirdParty/libxml2/vtklibxml2 + ThirdParty/lz4/vtklz4 + ThirdParty/lzma/vtklzma + ThirdParty/mpi4py + ThirdParty/netcdf/vtknetcdf + ThirdParty/nlohmannjson/vtknlohmannjson + ThirdParty/ogg/vtkogg + ThirdParty/png/vtkpng + ThirdParty/sqlite/vtksqlite + ThirdParty/theora/vtktheora + ThirdParty/tiff/vtktiff + ThirdParty/utf8/vtkutf8 + ThirdParty/zlib/vtkzlib + +Files: * +Copyright: 1993-2026 Ken Martin, Will Schroeder, Bill Lorensen, + Kitware Inc., Sandia Corporation. +License: BSD-3-clause + +Files: debian/* +Copyright: 2004-2009, A. Maitland Bottoms + 2009-2026, Dominique Belhachemi + 2010-2011, Mathieu Malaterre + 2011-2026, Anton Gladky + 2018-2026, Drew Parsons + 2026, Maximiliano Curia + 2026, Francesco Ballarin +License: BSD-3-clause + +Files: Accelerators/* +Copyright: 2012 Sandia Corporation. +License: BSD-3-clause + +Files: CMake/FindPEGTL.cmake +Copyright: Ken Martin, Will Schroeder, Bill Lorensen + 2006, 2007 Montel Laurent + 2008, 2009 Gael Guennebaud + 2009 Benoit Jacob +License: BSD-2-clause + +Files: CMake/SPDX_generate_output.py +Copyright: 2023 Kitware, Inc. +License: CC0-1.0 + +Files: CMake/vtkTopologicalSort.cmake +Copyright: Ken Martin, Will Schroeder, Bill Lorensen + 2010 Kitware, Inc. + 2007 Douglas Gregor + 2007 Troy Straszheim +License: BSL-1.0 + +Files: Common/Core/vtkMersenneTwister.h + Common/Core/vtkMersenneTwister_Private.cxx +Copyright: Ken Martin, Will Schroeder, Bill Lorensen + 2001-2009 Makoto Matsumoto and Takuji Nishimura. + 2009 Mutsuo Saito +License: BSD-2-clause + +Files: Common/Core/vtkTypeList.h +Copyright: Ken Martin, Will Schroeder, Bill Lorensen + 2001 Andrei Alexandrescu + 2001 Addison-Wesley +License: BSD-3-clause and MIT + +Files: Common/Core/vtkValueFromString.cxx +Copyright: Ken Martin, Will Schroeder, Bill Lorensen + 2017 Elias Kosunen +License: BSD-3-clause and Apache-2.0 + +Files: Common/DataModel/vtkDistributedGraphHelper.cxx + Common/DataModel/vtkDistributedGraphHelper.h +Copyright: Ken Martin, Will Schroeder, Bill Lorensen +License: BSL-1.0 + +Files: Examples/Android/NativeVTK/* +Copyright: 2010, The Android Open Source Project +License: Apache-2.0 + +Files: Filters/General/vtkTemporalPathLineFilter.cxx +Copyright: CSCS - Swiss National Supercomputing Centre. +License: BSD-3-clause + +Files: IO/Image/Testing/* +Copyright: GeometryFactory +License: BSD-3-clause + +Files: IO/MINC/* +Copyright: 2006 Atamai, Inc. + 1993-2000 Peter Neelin and David MacDonald, McConnell Brain Imaging Centre +License: BSD-3-clause + +Files: IO/PIO/BHTree.cxx + IO/PIO/BHTree.h +Copyright: 2007, Los Alamos National Security, LLC +License: BSD-3-clause + +Files: Interaction/Widgets/Testing/Cxx/* +Copyright: Ken Martin, Will Schroeder, Bill Lorensen +License: Apache-2.0 + +Files: Rendering/FreeType/fonts/face_courier*.cxx + Rendering/FreeType/fonts/face_times*.cxx +Copyright: 1990 Bitstream Inc. +License: Bitstream-Vera + +Files: Rendering/FreeType/fonts/face_arial*.cxx +Copyright: 1997-1999 (URW)++ Design & Development +License: Aladdin + +Files: Rendering/ZSpace/ThirdParty/* +Copyright: 2022-2023 zSpace, Inc. +License: BSD-3-clause + +Files: ThirdParty/cgns/vtkcgns/* +Copyright: 1999-2020 CGNS Steering Committee + 1999-2002 Aladdin Enterprises +License: Zlib + +Files: ThirdParty/cli11/vtkcli11/* +Copyright: 2017-2024 University of Cincinnati, Henry Schreiner +License: BSD-3-clause + +Files: ThirdParty/diy2/vtkdiy2/* +Copyright: 2015, The Regents of the University of California, through + Lawrence Berkeley National Laboratory +License: BSD-3-clause-LBNL + +Files: ThirdParty/diy2/vtkdiy2/include/vtkdiy2/thirdparty/fmt/* +Copyright: 2012-2016, Victor Zverovich +License: MIT-exception + +Files: ThirdParty/diy2/vtkdiy2/include/vtkdiy2/thirdparty/itlib/* +Copyright: + 2016-2018 Chobolabs Inc. + 2020-2022 Borislav Stanimirov +License: MIT + +Files: ThirdParty/diy2/vtkdiy2/include/vtkdiy2/thirdparty/thread/* +Copyright: 2010-2012 Marcus Geelnard +License: Zlib + +Files: ThirdParty/exodusII/vtkexodusII/* +Copyright: 2005-2017 National Technology & Engineering Solutions of Sandia, LLC (NTESS) +License: BSD-3-clause + +Files: ThirdParty/fast_float/vtkfast_float/* +Copyright: 2020-2021 Daniel Lemire +License: Apache-2.0 or MIT or BSL-1.0 + +Files: ThirdParty/fmt/vtkfmt/* +Copyright: 2012-present, Victor Zverovich +License: MIT-exception + +Files: + ThirdParty/glad/vtkglad/include/EGL/eglplatform.h + ThirdParty/glad/vtkglad/include/KHR/khrplatform.h +Copyright: 2007-2020 The Khronos Group Inc. +License: Apache-2.0 + +Files: + ThirdParty/glad/vtkglad/include/glad/* + ThirdParty/glad/vtkglad/src/* +Copyright: 2013-2022 David Herberth +License: MIT + +Files: ThirdParty/h5hut/vtkh5hut/* +Copyright: 2006-2016, The Regents of the University of California, + through Lawrence Berkeley National Laboratory (subject to receipt of any + required approvals from the U.S. Dept. of Energy) + and the Paul Scherrer Institut (Switzerland) +License: BSD-3-clause-notice-2 + +Files: ThirdParty/ioss/vtkioss/* +Copyright: 1999-2025 National Technology & Engineering Solutions of Sandia, LLC (NTESS) +License: BSD-3-clause + +Files: ThirdParty/ioss/vtkioss/pdqsort.h +Copyright: 2021-2023 Orson Peters +License: Zlib + +Files: ThirdParty/ioss/vtkioss/Ioss_Getline.C +Copyright: 1991-1993 Chris Thewalt +License: BSD-3-clause + +Files: ThirdParty/kissfft/vtkkissfft/* +Copyright: 2003-2010, Mark Borgerding +License: BSD-3-clause + +Files: ThirdParty/libharu/vtklibharu/* +Copyright: 1999-2006 Takeshi Kanno + 2007-2009 Antony Dovgal +License: Zlib + +Files: ThirdParty/libharu/vtklibharu/src/t4.h +Copyright: 1988-1997 Sam Leffler + 1991-1997 Silicon Graphics, Inc. +License: Libtiff + +Files: ThirdParty/loguru/vtkloguru/* +Copyright: Emil Ernerfeldt +License: public-domain + +Files: ThirdParty/pegtl/vtkpegtl/* +Copyright: 2007-2020 Dr. Colin Hirsch and Daniel Frey +License: Expat + +Files: ThirdParty/pugixml/vtkpugixml/* +Copyright: 2006-2020 Arseny Kapoulkine +License: Expat + +Files: ThirdParty/scn/vtkscn/* +Copyright: 2017-2020 Elias Kosunen +License: Apache-2.0 + +Files: ThirdParty/scn/vtkscn/include/vtkscn/scan.h +Copyright: 2017-2020 Elias Kosunen + 2018 Tristan Brindle +License: Apache-2.0 and BSL-1.0 + +Files: ThirdParty/token/vtktoken/* +Copyright: 2020-2023 Kitware, Inc. +License: BSD-3-clause + +Files: ThirdParty/verdict/vtkverdict/* +Copyright: 2003, 2006, 2019 National Technology & Engineering Solutions of Sandia, LLC (NTESS) +License: BSD-3-clause + +Files: ThirdParty/viskores/vtkviskores/* +Copyright: 2025 Kitware Inc., + National Technology & Engineering Solutions of Sandia, LLC (NTESS), + UT-Battelle, LLC., + Los Alamos National Security, LLC. +License: Viskores-1.0 + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/lodepng/viskoreslodepng/* +Copyright: 2005-2020 Lode Vandevenne +License: Zlib + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/diy/viskoresdiy/* +Copyright: 2015 The Regents of the University of California, through + Lawrence Berkeley National Laboratory +License: BSD-3-clause-LBNL + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/diy/viskoresdiy/include/viskoresdiy/thirdparty/itlib/* +Copyright: 2016-2018 Chobolabs Inc. + 2020-2022 Borislav Stanimirov +License: MIT + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/diy/viskoresdiy/include/viskoresdiy/thirdparty/thread/* +Copyright: 2010-2012 Marcus Geelnard +License: Zlib + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/diy/viskoresdiy/include/viskoresdiy/thirdparty/fmt/* +Copyright: 2012-2016 Victor Zverovich +License: MIT-exception + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/loguru/viskoresloguru/* +Copyright: Emil Ernerfeldt +License: public-domain + +Files: ThirdParty/viskores/vtkviskores/viskores/viskores/thirdparty/lcl/viskoreslcl/* +Copyright: 2019 Kitware Inc. +License: BSD-3-clause + +Files: ThirdParty/vpic/* +Copyright: 2007, Los Alamos National Security, LLC +License: BSD-3-clause + +Files: ThirdParty/xdmf2/vtkxdmf2/* +Copyright: 1984, 1989, 1990, 2000-2003 Free Software Foundation, Inc. + 2002 US Army Research Laboratory +License: GPL-2+ + +Files: ThirdParty/xdmf3/vtkxdmf3/* +Copyright: 2011 US Army Research Laboratory + 2011 Kitware Inc. +License: BSD-3-clause + +Files: ThirdParty/xdmf3/vtkxdmf3/core/loki/* +Copyright: 2001 Andrei Alexandrescu + 2001 Addison-Wesley +License: MIT + +Files: Utilities/DICOMParser/* +Copyright: 2003, Matt Turek +License: BSD-3-clause + +Files: Utilities/KWSys/* +Copyright: 1996, Silicon Graphics Computer Systems, Inc. +License: BSD-3-clause + +Files: Utilities/KWSys/vtksys/MD5.c +Copyright: 1999, 2000, 2002, Aladdin Enterprises. +License: Zlib + +Files: Utilities/Maintenance/* +Copyright: Insight Software Consortium +License: Apache-2.0 + +Files: Utilities/MetaIO/* +Copyright: 2000-2011, Insight Software Consortium +License: Apache-2.0 + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names + of any contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSL-1.0 + Boost Software License - Version 1.0 - August 17th, 2003 + . + Permission is hereby granted, free of charge, to any person or organization + obtaining a copy of the software and accompanying documentation covered by + this license (the "Software") to use, reproduce, display, distribute, + execute, and transmit the Software, and to prepare derivative works of the + Software, and to permit third-parties to whom the Software is furnished to + do so, all subject to the following: + . + The copyright notices in the Software and this entire statement, including + the above license grant, this restriction and the following disclaimer, + must be included in all copies of the Software, in whole or in part, and + all derivative works of the Software, unless such copies or derivative + works are solely in the form of machine-executable object code generated by + a source language processor. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT + SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE + FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +License: Apache-2.0 + On Debian systems, the full text of the Apache + License version 2 can be found in the file + `/usr/share/common-licenses/Apache-2.0'. + +License: Zlib + This software is provided 'as-is', without any express or implied warranty. + . + In no event will the authors be held liable for any damages arising from the + use of this software. + . + Permission is granted to anyone to use this software for any purpose,including + commercial applications, and to alter it and redistribute it freely, subject + to the following restrictions: + . + 1. The origin of this software must not be misrepresented; you must not claim + that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +License: GPL-2+ + This program is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later + version. + . + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +License: MIT-exception + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + . + --- Optional exception to the license --- + . + As an exception, if, as a result of your compiling your source code, portions + of this Software are embedded into a machine-executable object form of such + source code, you may redistribute such embedded portions in such object form + without including the above copyright and permission notices. + +License: BSD-3-clause-notice-2 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + (3) Neither the name of the University of California, Lawrence Berkeley + National Laboratory, U.S. Dept. of Energy, Paul Scherrer Institut + (Switzerland) nor the names of its contributors may be used to endorse + or promote products derived from this software without specific prior + written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + . + You are under no obligation whatsoever to provide any bug fixes, + patches, or upgrades to the features, functionality or performance of + the source code ("Enhancements") to anyone; however, if you choose to + make your Enhancements available either publicly, or directly to + Lawrence Berkeley National Laboratory, without imposing a separate + written license agreement for such Enhancements, then you hereby grant + the following license: a non-exclusive, royalty-free perpetual license + to install, use, modify, prepare derivative works, incorporate into + other computer software, distribute, and sublicense such enhancements or + derivative works thereof, in binary and source code form. + +License: BSD-3-clause-LBNL + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + . + (1) Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + . + (2) Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + . + (3) Neither the name of the University of California, Lawrence Berkeley National + Laboratory, U.S. Dept. of Energy nor the names of its contributors may be used + to endorse or promote products derived from this software without specific prior + written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + . + You are under no obligation whatsoever to provide any bug fixes, patches, or + upgrades to the features, functionality or performance of the source code + ("Enhancements") to anyone; however, if you choose to make your Enhancements + available either publicly, or directly to Lawrence Berkeley National Laboratory, + without imposing a separate written license agreement for such Enhancements, + then you hereby grant the following license: a non-exclusive, royalty-free + perpetual license to install, use, modify, prepare derivative works, incorporate + into other computer software, distribute, and sublicense such enhancements or + derivative works thereof, in binary and source code form. + +License: Viskores-1.0 + Viskores License Version 1.0 + Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government + retains certain rights in this software. + . + Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National + Laboratory (LANL), the U.S. Government retains certain rights in + this software. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. + . + * Neither the name of Kitware nor the names of any contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: Bitstream-Vera + Permission is hereby granted, free of charge, to any person obtaining a copy + of the fonts accompanying this license ("Fonts") and associated documentation + files (the "Font Software"), to reproduce and distribute the Font Software, + including without limitation the rights to use, copy, merge, publish, + distribute, and/or sell copies of the Font Software, and to permit persons + to whom the Font Software is furnished to do so, subject to the following + conditions: + . + The above copyright and trademark notices and this permission notice shall + be included in all copies of one or more of the Font Software typefaces. + . + The Font Software may be modified, altered, or added to, and in particular + the designs of glyphs or characters in the Fonts may be modified and + additional glyphs or characters may be added to the Fonts, only if the fonts + are renamed to names not containing either the words "Bitstream" or the word + "Vera". + . + This License becomes null and void to the extent applicable to Fonts or Font + Software that has been modified and is distributed under the "Bitstream Vera" + names. + . + The Font Software may be sold as part of a larger software package but no copy + of one or more of the Font Software typefaces may be sold by itself. + . + THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, + TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, + SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT + SOFTWARE. + +License: Aladdin + Aladdin Free Public License (AFPL) + . + This software is distributed under the Aladdin Free Public License (AFPL). + See https://web.mit.edu/ghostscript/www/Public.htm for full details. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the copyright notice and this + notice are preserved. + +License: CC0-1.0 + On Debian systems, the full text of the Creative Commons Zero v1.0 Universal + license can be found in `/usr/share/common-licenses/CC0-1.0'. + +License: Libtiff + Permission to use, copy, modify, distribute, and sell this software and + its documentation for any purpose is hereby granted without fee, provided + that (i) the above copyright notices and this permission notice appear in + all copies of the software and related documentation, and (ii) the names of + Sam Leffler and Silicon Graphics may not be used in any advertising or + publicity relating to the software without the specific, prior written + permission of Sam Leffler and Silicon Graphics. + . + THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + . + IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR + ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF + LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + OF THIS SOFTWARE. + +License: public-domain + This work is dedicated to the public domain. It is free of any copyright + restrictions and can be used for any purpose without attribution. diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 000000000..af46c8f66 --- /dev/null +++ b/gbp.conf @@ -0,0 +1,3 @@ +[DEFAULT] +pristine-tar = True + diff --git a/libvtk9-dev.install b/libvtk9-dev.install new file mode 100644 index 000000000..911f278aa --- /dev/null +++ b/libvtk9-dev.install @@ -0,0 +1,3 @@ +usr/include/vtk-9.6 usr/include +usr/lib/*/*.so +usr/lib/*/cmake/vtk-9.6 diff --git a/libvtk9-java.install b/libvtk9-java.install new file mode 100644 index 000000000..acc83b912 --- /dev/null +++ b/libvtk9-java.install @@ -0,0 +1,4 @@ +usr/bin/vtkParseJava-9.6 usr/bin +usr/bin/vtkWrapJava-9.6 usr/bin +usr/lib/*/java/vtk9.jar usr/share/java +usr/lib/*/java/vtk-L* diff --git a/libvtk9-java.lintian-overrides b/libvtk9-java.lintian-overrides new file mode 100644 index 000000000..0195b3716 --- /dev/null +++ b/libvtk9-java.lintian-overrides @@ -0,0 +1 @@ +libvtk9-java: shared-library-lacks-prerequisites diff --git a/libvtk9-java.manpages b/libvtk9-java.manpages new file mode 100644 index 000000000..78991b8c1 --- /dev/null +++ b/libvtk9-java.manpages @@ -0,0 +1,2 @@ +debian/manpages/vtkParseJava-9.6.1 +debian/manpages/vtkWrapJava-9.6.1 diff --git a/libvtk9-qt-dev.install b/libvtk9-qt-dev.install new file mode 100644 index 000000000..3834a17a3 --- /dev/null +++ b/libvtk9-qt-dev.install @@ -0,0 +1,5 @@ +usr/lib/*/*Qt*.so +usr/include/vtk-9.6/*Qt* +usr/include/vtk-9.6/Q* +usr/include/vtk*/vtkQWidget* +usr/include/vtk*/vtkQImageToImageSource.h diff --git a/libvtk9.6-qt.install b/libvtk9.6-qt.install new file mode 100644 index 000000000..4c7a2dd85 --- /dev/null +++ b/libvtk9.6-qt.install @@ -0,0 +1 @@ +usr/lib/*/*Qt*.so.* diff --git a/libvtk9.6-qt.lintian-overrides b/libvtk9.6-qt.lintian-overrides new file mode 100644 index 000000000..beca3ffc3 --- /dev/null +++ b/libvtk9.6-qt.lintian-overrides @@ -0,0 +1 @@ +libvtk9.6-qt: package-name-doesnt-match-sonames diff --git a/libvtk9.6.install b/libvtk9.6.install new file mode 100644 index 000000000..8ddd0b2db --- /dev/null +++ b/libvtk9.6.install @@ -0,0 +1,2 @@ +usr/lib/*/*.so.* +usr/lib/*/vtk-9.6 diff --git a/libvtk9.6.lintian-overrides b/libvtk9.6.lintian-overrides new file mode 100644 index 000000000..27d1fa999 --- /dev/null +++ b/libvtk9.6.lintian-overrides @@ -0,0 +1 @@ +libvtk9.6: package-name-doesnt-match-sonames diff --git a/manpages/pvtkpython.1 b/manpages/pvtkpython.1 new file mode 100644 index 000000000..edc3db69c --- /dev/null +++ b/manpages/pvtkpython.1 @@ -0,0 +1,82 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH PYTHON "1" "October 2025" "Python 3.13.8" "User Commands" +.SH NAME +pvtkpython \- Parallel Python interpreter with VTK library bindings +.SH DESCRIPTION +usage: python [option] ... [\-c cmd | \fB\-m\fR mod | file | \fB\-]\fR [arg] ... +Options (and corresponding environment variables): +\fB\-b\fR : issue warnings about converting bytes/bytearray to str and comparing +.IP +bytes/bytearray with str or bytes with int. (\fB\-bb\fR: issue errors) +.PP +\fB\-B\fR : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x +\fB\-c\fR cmd : program passed in as string (terminates option list) +\fB\-d\fR : turn on parser debugging output (for experts only, only works on +.IP +debug builds); also PYTHONDEBUG=x +.PP +\fB\-E\fR : ignore PYTHON* environment variables (such as PYTHONPATH) +\fB\-h\fR : print this help message and exit (also \-? or \fB\-\-help\fR) +\fB\-i\fR : inspect interactively after running script; forces a prompt even +.IP +if stdin does not appear to be a terminal; also PYTHONINSPECT=x +.PP +\fB\-I\fR : isolate Python from the user's environment (implies \fB\-E\fR, \fB\-P\fR and \fB\-s\fR) +\fB\-m\fR mod : run library module as a script (terminates option list) +\fB\-O\fR : remove assert and __debug__\-dependent statements; add .opt\-1 before +.IP +\&.pyc extension; also PYTHONOPTIMIZE=x +.PP +\fB\-OO\fR : do \fB\-O\fR changes and also discard docstrings; add .opt\-2 before +.IP +\&.pyc extension +.PP +\fB\-P\fR : don't prepend a potentially unsafe path to sys.path; also +.IP +PYTHONSAFEPATH +.PP +\fB\-q\fR : don't print version and copyright messages on interactive startup +\fB\-s\fR : don't add user site directory to sys.path; also PYTHONNOUSERSITE=x +\fB\-S\fR : don't imply 'import site' on initialization +\fB\-u\fR : force the stdout and stderr streams to be unbuffered; +.IP +this option has no effect on stdin; also PYTHONUNBUFFERED=x +.PP +\fB\-v\fR : verbose (trace import statements); also PYTHONVERBOSE=x +.IP +can be supplied multiple times to increase verbosity +.PP +\fB\-V\fR : print the Python version number and exit (also \fB\-\-version\fR) +.IP +when given twice, print more information about the build +.PP +\fB\-W\fR arg : warning control; arg is action:message:category:module:lineno +.IP +also PYTHONWARNINGS=arg +.PP +\fB\-x\fR : skip first line of source, allowing use of non\-Unix forms of #!cmd +\fB\-X\fR opt : set implementation\-specific option +\fB\-\-check\-hash\-based\-pycs\fR always|default|never: +.IP +control how Python invalidates hash\-based .pyc files +.PP +\fB\-\-help\-env\fR: print help about Python environment variables and exit +\fB\-\-help\-xoptions\fR: print help about implementation\-specific \fB\-X\fR options and exit +\fB\-\-help\-all\fR: print complete help information and exit +.PP +Arguments: +file : program read from script file +\- : program read from stdin (default; interactive mode if a tty) +arg ...: arguments passed to program in sys.argv[1:] +.SH "SEE ALSO" +The full documentation for +.B Python +is maintained as a Texinfo manual. If the +.B info +and +.B Python +programs are properly installed at your site, the command +.IP +.B info Python +.PP +should give you access to the complete manual. diff --git a/manpages/vtkParseJava-9.6.1 b/manpages/vtkParseJava-9.6.1 new file mode 100644 index 000000000..4904cbb2d --- /dev/null +++ b/manpages/vtkParseJava-9.6.1 @@ -0,0 +1,65 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH VTKPARSEJAVA-9.6 "1" "October 2025" "vtkParseJava-9.6 9.6" "User Commands" +.SH NAME +vtkParseJava-9.6 \- Parses C++ headers for Java wrapper generation +.SH SYNOPSIS +.B vtkParseJava-9.6 +[\fI\,options\/\fR] \fI\,infile\/\fR... +.SH DESCRIPTION +.TP +\fB\-\-help\fR +print this help message +.TP +\fB\-\-version\fR +print the VTK version +.TP +\fB\-o\fR +the output file +.TP +\fB\-I\fR +add an include directory +.TP +\fB\-D\fR +define a preprocessor macro +.TP +\fB\-U\fR +undefine a preprocessor macro +.TP +\fB\-imacros\fR +read macros from a header file +.TP +\fB\-MF\fR +write dependency information to a file +.TP +\fB\-undef\fR +do not predefine platform macros +.TP +\fB\-Wempty\fR +warn when nothing is wrapped +.TP +\fB\-Wno\-empty\fR +do not warn when nothing is wrapped +.TP +@ +read arguments from a file +.TP +\fB\-dM\fR +dump all macro definitions to output +.TP +\fB\-\-hints\fR +the hints file to use +.TP +\fB\-\-types\fR +the type hierarchy file to use +.SH "SEE ALSO" +The full documentation for +.B vtkParseJava-9.6 +is maintained as a Texinfo manual. If the +.B info +and +.B vtkParseJava-9.6 +programs are properly installed at your site, the command +.IP +.B info vtkParseJava-9.6 +.PP +should give you access to the complete manual. diff --git a/manpages/vtkProbeOpenGLVersion-9.6.1 b/manpages/vtkProbeOpenGLVersion-9.6.1 new file mode 100644 index 000000000..d5d377304 --- /dev/null +++ b/manpages/vtkProbeOpenGLVersion-9.6.1 @@ -0,0 +1,17 @@ +.TH VTKPROBEOPENGLVERSION 1 "October 2025" "VTK 9.6" "User Commands" +.SH NAME +vtkProbeOpenGLVersion \- Test and report system OpenGL version +.SH SYNOPSIS +\fBvtkProbeOpenGLVersion\fR +.SH DESCRIPTION +\fBvtkProbeOpenGLVersion\fR is a diagnostic utility included with the Visualization Toolkit (VTK) 9.6. It creates a simple VTK rendering window to test and report the system's OpenGL capabilities to standard output. +.PP +This tool is primarily used for debugging graphics-related issues, such as verifying hardware acceleration or diagnosing problems in virtualized or remote desktop environments. VTK 9.6 includes new OpenGL error reporting capabilities, which may provide more detailed output if the VTK build was configured with OpenGL debugging enabled. +.PP +The program does not accept any command-line options. It runs automatically, performs its tests, and exits after a brief pause. +.SH SEE ALSO +\fBvtk\fR(1) +.SH BUGS +No known bugs. +.SH AUTHOR +This manual page was written for VTK 9.6. diff --git a/manpages/vtkWrapHierarchy-9.6.1 b/manpages/vtkWrapHierarchy-9.6.1 new file mode 100644 index 000000000..e24dbcc65 --- /dev/null +++ b/manpages/vtkWrapHierarchy-9.6.1 @@ -0,0 +1,56 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH VTKWRAPHIERARCHY-9.6 "1" "October 2025" "vtkWrapHierarchy-9.6 9.6" "User Commands" +.SH NAME +vtkWrapHierarchy-9.6 \- Builds a class hierarchy from C++ header files for VTK wrapping +.SH SYNOPSIS +.B vtkWrapHierarchy-9.6 +[\fI\,options\/\fR] \fI\,infile\/\fR... +.SH DESCRIPTION +.TP +\fB\-\-help\fR +print this help message +.TP +\fB\-\-version\fR +print the VTK version +.TP +\fB\-o\fR +the output file +.TP +\fB\-I\fR +add an include directory +.TP +\fB\-D\fR +define a preprocessor macro +.TP +\fB\-U\fR +undefine a preprocessor macro +.TP +\fB\-imacros\fR +read macros from a header file +.TP +\fB\-MF\fR +write dependency information to a file +.TP +\fB\-undef\fR +do not predefine platform macros +.TP +\fB\-Wempty\fR +warn when nothing is wrapped +.TP +\fB\-Wno\-empty\fR +do not warn when nothing is wrapped +.TP +@ +read arguments from a file +.SH "SEE ALSO" +The full documentation for +.B vtkWrapHierarchy-9.6 +is maintained as a Texinfo manual. If the +.B info +and +.B vtkWrapHierarchy-9.6 +programs are properly installed at your site, the command +.IP +.B info vtkWrapHierarchy-9.6 +.PP +should give you access to the complete manual. diff --git a/manpages/vtkWrapJava-9.6.1 b/manpages/vtkWrapJava-9.6.1 new file mode 100644 index 000000000..bb4b1d1be --- /dev/null +++ b/manpages/vtkWrapJava-9.6.1 @@ -0,0 +1,65 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH VTKWRAPJAVA-9.6 "1" "October 2025" "vtkWrapJava-9.6 9.6" "User Commands" +.SH NAME +vtkWrapJava-9.6 \- Generates JNI glue code for VTK Java wrappers +.SH SYNOPSIS +.B vtkWrapJava-9.6 +[\fI\,options\/\fR] \fI\,infile\/\fR... +.SH DESCRIPTION +.TP +\fB\-\-help\fR +print this help message +.TP +\fB\-\-version\fR +print the VTK version +.TP +\fB\-o\fR +the output file +.TP +\fB\-I\fR +add an include directory +.TP +\fB\-D\fR +define a preprocessor macro +.TP +\fB\-U\fR +undefine a preprocessor macro +.TP +\fB\-imacros\fR +read macros from a header file +.TP +\fB\-MF\fR +write dependency information to a file +.TP +\fB\-undef\fR +do not predefine platform macros +.TP +\fB\-Wempty\fR +warn when nothing is wrapped +.TP +\fB\-Wno\-empty\fR +do not warn when nothing is wrapped +.TP +@ +read arguments from a file +.TP +\fB\-dM\fR +dump all macro definitions to output +.TP +\fB\-\-hints\fR +the hints file to use +.TP +\fB\-\-types\fR +the type hierarchy file to use +.SH "SEE ALSO" +The full documentation for +.B vtkWrapJava-9.6 +is maintained as a Texinfo manual. If the +.B info +and +.B vtkWrapJava-9.6 +programs are properly installed at your site, the command +.IP +.B info vtkWrapJava-9.6 +.PP +should give you access to the complete manual. diff --git a/manpages/vtkWrapJavaScript-9.6.1 b/manpages/vtkWrapJavaScript-9.6.1 new file mode 100644 index 000000000..6fbcbf4b7 --- /dev/null +++ b/manpages/vtkWrapJavaScript-9.6.1 @@ -0,0 +1,65 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH VTKWRAPJAVASCRIPT-9.6 "1" "October 2025" "vtkWrapJavaScript-9.6 9.6" "User Commands" +.SH NAME +vtkWrapJavaScript-9.6 \- Generates JavaScript/Embind wrapper code for VTK objects +.SH SYNOPSIS +.B vtkWrapJavaScript-9.6 +[\fI\,options\/\fR] \fI\,infile\/\fR... +.SH DESCRIPTION +.TP +\fB\-\-help\fR +print this help message +.TP +\fB\-\-version\fR +print the VTK version +.TP +\fB\-o\fR +the output file +.TP +\fB\-I\fR +add an include directory +.TP +\fB\-D\fR +define a preprocessor macro +.TP +\fB\-U\fR +undefine a preprocessor macro +.TP +\fB\-imacros\fR +read macros from a header file +.TP +\fB\-MF\fR +write dependency information to a file +.TP +\fB\-undef\fR +do not predefine platform macros +.TP +\fB\-Wempty\fR +warn when nothing is wrapped +.TP +\fB\-Wno\-empty\fR +do not warn when nothing is wrapped +.TP +@ +read arguments from a file +.TP +\fB\-dM\fR +dump all macro definitions to output +.TP +\fB\-\-hints\fR +the hints file to use +.TP +\fB\-\-types\fR +the type hierarchy file to use +.SH "SEE ALSO" +The full documentation for +.B vtkWrapJavaScript-9.6 +is maintained as a Texinfo manual. If the +.B info +and +.B vtkWrapJavaScript-9.6 +programs are properly installed at your site, the command +.IP +.B info vtkWrapJavaScript-9.6 +.PP +should give you access to the complete manual. diff --git a/manpages/vtkWrapPython-9.6.1 b/manpages/vtkWrapPython-9.6.1 new file mode 100644 index 000000000..93761374d --- /dev/null +++ b/manpages/vtkWrapPython-9.6.1 @@ -0,0 +1,65 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH VTKWRAPPYTHON-9.6 "1" "October 2025" "vtkWrapPython-9.6 9.6" "User Commands" +.SH NAME +vtkWrapPython-9.6 \- Generates Python wrapper code from VTK C++ header files +.SH SYNOPSIS +.B vtkWrapPython-9.6 +[\fI\,options\/\fR] \fI\,infile\/\fR... +.SH DESCRIPTION +.TP +\fB\-\-help\fR +print this help message +.TP +\fB\-\-version\fR +print the VTK version +.TP +\fB\-o\fR +the output file +.TP +\fB\-I\fR +add an include directory +.TP +\fB\-D\fR +define a preprocessor macro +.TP +\fB\-U\fR +undefine a preprocessor macro +.TP +\fB\-imacros\fR +read macros from a header file +.TP +\fB\-MF\fR +write dependency information to a file +.TP +\fB\-undef\fR +do not predefine platform macros +.TP +\fB\-Wempty\fR +warn when nothing is wrapped +.TP +\fB\-Wno\-empty\fR +do not warn when nothing is wrapped +.TP +@ +read arguments from a file +.TP +\fB\-dM\fR +dump all macro definitions to output +.TP +\fB\-\-hints\fR +the hints file to use +.TP +\fB\-\-types\fR +the type hierarchy file to use +.SH "SEE ALSO" +The full documentation for +.B vtkWrapPython-9.6 +is maintained as a Texinfo manual. If the +.B info +and +.B vtkWrapPython-9.6 +programs are properly installed at your site, the command +.IP +.B info vtkWrapPython-9.6 +.PP +should give you access to the complete manual. diff --git a/manpages/vtkWrapPythonInit-9.6.1 b/manpages/vtkWrapPythonInit-9.6.1 new file mode 100644 index 000000000..ae261ea58 --- /dev/null +++ b/manpages/vtkWrapPythonInit-9.6.1 @@ -0,0 +1,24 @@ +.TH VTKWRAPPYTHONINIT 1 "October 2025" "VTK 9.6" "User Commands" +.SH NAME +vtkWrapPythonInit \- A VTK utility to generate Python module initialization code +.SH SYNOPSIS +\fBvtkWrapPythonInit\fR \fIinput_file\fR \fIinit_file\fR +.SH DESCRIPTION +\fBvtkWrapPythonInit\fR is a tool from the Visualization Toolkit (VTK) used to generate the C++ source code for a Python extension module's initialization function. This `PyInit` entry point is responsible for registering all the types defined in a given module. +.PP +This tool is used by the VTK build system during the compilation of Python wrappers for C++ classes. +.SH ARGUMENTS +.TP +\fIinput_file\fR +A file listing the wrapped classes that need to be initialized. +.TP +\fIinit_file\fR +The output C++ source file that contains the Python module initialization function. +.SH SEE ALSO +\fBvtk\fR(1) +.br +\fBvtkWrapPython\fR(1) +.SH BUGS +No known bugs. +.SH AUTHOR +This manual page was written for VTK 9.6. diff --git a/manpages/vtkWrapSerDes-9.6.1 b/manpages/vtkWrapSerDes-9.6.1 new file mode 100644 index 000000000..89423371a --- /dev/null +++ b/manpages/vtkWrapSerDes-9.6.1 @@ -0,0 +1,65 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH VTKWRAPSERDES-9.6 "1" "October 2025" "vtkWrapSerDes-9.6 9.6" "User Commands" +.SH NAME +vtkWrapSerDes-9.6 \- Generates serialization and deserialization code for VTK objects +.SH SYNOPSIS +.B vtkWrapSerDes-9.6 +[\fI\,options\/\fR] \fI\,infile\/\fR... +.SH DESCRIPTION +.TP +\fB\-\-help\fR +print this help message +.TP +\fB\-\-version\fR +print the VTK version +.TP +\fB\-o\fR +the output file +.TP +\fB\-I\fR +add an include directory +.TP +\fB\-D\fR +define a preprocessor macro +.TP +\fB\-U\fR +undefine a preprocessor macro +.TP +\fB\-imacros\fR +read macros from a header file +.TP +\fB\-MF\fR +write dependency information to a file +.TP +\fB\-undef\fR +do not predefine platform macros +.TP +\fB\-Wempty\fR +warn when nothing is wrapped +.TP +\fB\-Wno\-empty\fR +do not warn when nothing is wrapped +.TP +@ +read arguments from a file +.TP +\fB\-dM\fR +dump all macro definitions to output +.TP +\fB\-\-hints\fR +the hints file to use +.TP +\fB\-\-types\fR +the type hierarchy file to use +.SH "SEE ALSO" +The full documentation for +.B vtkWrapSerDes-9.6 +is maintained as a Texinfo manual. If the +.B info +and +.B vtkWrapSerDes-9.6 +programs are properly installed at your site, the command +.IP +.B info vtkWrapSerDes-9.6 +.PP +should give you access to the complete manual. diff --git a/manpages/vtkpython.1 b/manpages/vtkpython.1 new file mode 100644 index 000000000..bea63005e --- /dev/null +++ b/manpages/vtkpython.1 @@ -0,0 +1,82 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH PYTHON "1" "October 2025" "Python 3.13.8" "User Commands" +.SH NAME +vtkpython \- Python interpreter with VTK library bindings +.SH DESCRIPTION +usage: python [option] ... [\-c cmd | \fB\-m\fR mod | file | \fB\-]\fR [arg] ... +Options (and corresponding environment variables): +\fB\-b\fR : issue warnings about converting bytes/bytearray to str and comparing +.IP +bytes/bytearray with str or bytes with int. (\fB\-bb\fR: issue errors) +.PP +\fB\-B\fR : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x +\fB\-c\fR cmd : program passed in as string (terminates option list) +\fB\-d\fR : turn on parser debugging output (for experts only, only works on +.IP +debug builds); also PYTHONDEBUG=x +.PP +\fB\-E\fR : ignore PYTHON* environment variables (such as PYTHONPATH) +\fB\-h\fR : print this help message and exit (also \-? or \fB\-\-help\fR) +\fB\-i\fR : inspect interactively after running script; forces a prompt even +.IP +if stdin does not appear to be a terminal; also PYTHONINSPECT=x +.PP +\fB\-I\fR : isolate Python from the user's environment (implies \fB\-E\fR, \fB\-P\fR and \fB\-s\fR) +\fB\-m\fR mod : run library module as a script (terminates option list) +\fB\-O\fR : remove assert and __debug__\-dependent statements; add .opt\-1 before +.IP +\&.pyc extension; also PYTHONOPTIMIZE=x +.PP +\fB\-OO\fR : do \fB\-O\fR changes and also discard docstrings; add .opt\-2 before +.IP +\&.pyc extension +.PP +\fB\-P\fR : don't prepend a potentially unsafe path to sys.path; also +.IP +PYTHONSAFEPATH +.PP +\fB\-q\fR : don't print version and copyright messages on interactive startup +\fB\-s\fR : don't add user site directory to sys.path; also PYTHONNOUSERSITE=x +\fB\-S\fR : don't imply 'import site' on initialization +\fB\-u\fR : force the stdout and stderr streams to be unbuffered; +.IP +this option has no effect on stdin; also PYTHONUNBUFFERED=x +.PP +\fB\-v\fR : verbose (trace import statements); also PYTHONVERBOSE=x +.IP +can be supplied multiple times to increase verbosity +.PP +\fB\-V\fR : print the Python version number and exit (also \fB\-\-version\fR) +.IP +when given twice, print more information about the build +.PP +\fB\-W\fR arg : warning control; arg is action:message:category:module:lineno +.IP +also PYTHONWARNINGS=arg +.PP +\fB\-x\fR : skip first line of source, allowing use of non\-Unix forms of #!cmd +\fB\-X\fR opt : set implementation\-specific option +\fB\-\-check\-hash\-based\-pycs\fR always|default|never: +.IP +control how Python invalidates hash\-based .pyc files +.PP +\fB\-\-help\-env\fR: print help about Python environment variables and exit +\fB\-\-help\-xoptions\fR: print help about implementation\-specific \fB\-X\fR options and exit +\fB\-\-help\-all\fR: print complete help information and exit +.PP +Arguments: +file : program read from script file +\- : program read from stdin (default; interactive mode if a tty) +arg ...: arguments passed to program in sys.argv[1:] +.SH "SEE ALSO" +The full documentation for +.B Python +is maintained as a Texinfo manual. If the +.B info +and +.B Python +programs are properly installed at your site, the command +.IP +.B info Python +.PP +should give you access to the complete manual. diff --git a/memory-tracker.py b/memory-tracker.py new file mode 100755 index 000000000..8df247af7 --- /dev/null +++ b/memory-tracker.py @@ -0,0 +1,522 @@ +#!/usr/bin/env python3 +""" +VTK9 Memory Tracker & Compiler Launcher +======================================== +Measures and reports: + 1. Per-worker compiler peak memory (ru_maxrss) via CMAKE_CXX_COMPILER_LAUNCHER. + 2. Total concurrent process-tree RSS and cgroup memory during dh_auto_build. + 3. Statistical distribution (max, mean, p50, p90) and recommended arguments + for guess_concurrency --require-mem. + +Outputs all findings directly into the build log so they are preserved +on Debian buildds, debusine, salsa-ci, and sbuild. +""" + +import sys +import os +import time +import subprocess +import resource +import fcntl +import pathlib +import itertools +import threading +import signal +import math + + +def get_mem_log_path(build_dir=None): + if "VTK_MEM_LOG" in os.environ: + return pathlib.Path(os.environ["VTK_MEM_LOG"]) + if build_dir: + return pathlib.Path(build_dir) / "vtk_build_workers_mem.tsv" + return pathlib.Path("/tmp/vtk_build_workers_mem.tsv") + + +def get_monitor_log_path(build_dir=None): + if "VTK_MONITOR_LOG" in os.environ: + return pathlib.Path(os.environ["VTK_MONITOR_LOG"]) + if build_dir: + return pathlib.Path(build_dir) / "vtk_build_monitor.log" + return pathlib.Path("/tmp/vtk_build_monitor.log") + + +# --------------------------------------------------------------------------- +# Cgroup & System Memory Utilities +# --------------------------------------------------------------------------- + +def read_cgroup_memory(): + """Returns (current_bytes, peak_bytes) from cgroup v2 if available.""" + try: + cgroup_text = pathlib.Path("/proc/self/cgroup").read_text(encoding="utf-8").strip() + parts = cgroup_text.split(":", 2) + if len(parts) < 3: + return None, None + group_str = parts[2].lstrip("/") + group = pathlib.PurePath(group_str) + sfc = pathlib.Path("/sys/fs/cgroup") + for g in itertools.chain((group,), group.parents): + p = sfc / g + cur_file = p / "memory.current" + peak_file = p / "memory.peak" + if cur_file.exists(): + cur_val = int(cur_file.read_text().strip()) + peak_val = int(peak_file.read_text().strip()) if peak_file.exists() else cur_val + return cur_val, peak_val + except Exception: + pass + return None, None + + +def read_proc_meminfo(): + """Returns dict of /proc/meminfo in KiB.""" + info = {} + try: + with open("/proc/meminfo", "r", encoding="ascii") as f: + for line in f: + parts = line.split(":") + if len(parts) == 2: + k = parts[0].strip() + v = parts[1].strip().split()[0] + if v.isdigit(): + info[k] = int(v) + except Exception: + pass + return info + + +def get_descendant_pids(root_pid): + """Find all descendant PIDs of root_pid.""" + children = {} + rss_map = {} + try: + for entry in os.listdir("/proc"): + if not entry.isdigit(): + continue + pid = int(entry) + try: + ppid = None + rss = 0 + with open(f"/proc/{pid}/status", "r", encoding="ascii") as f: + for line in f: + if line.startswith("PPid:"): + ppid = int(line.split()[1]) + elif line.startswith("VmRSS:"): + rss = int(line.split()[1]) + if ppid is not None: + children.setdefault(ppid, []).append(pid) + rss_map[pid] = rss + except (FileNotFoundError, ProcessLookupError, PermissionError): + pass + except Exception: + pass + + descendants = [] + stack = [root_pid] + while stack: + curr = stack.pop() + if curr in children: + for child in children[curr]: + descendants.append(child) + stack.append(child) + + total_rss = sum(rss_map.get(p, 0) for p in descendants) + rss_map.get(root_pid, 0) + return descendants, total_rss + + +# --------------------------------------------------------------------------- +# Background Sampler +# --------------------------------------------------------------------------- + +class MemoryMonitor(threading.Thread): + def __init__(self, root_pid, log_file, interval=1.0): + super().__init__(daemon=True) + self.root_pid = root_pid + self.log_file = log_file + self.interval = interval + self.stop_event = threading.Event() + self.peak_tree_rss_kib = 0 + self.peak_cgroup_bytes = 0 + self.min_avail_kib = None + self.start_avail_kib = None + + def run(self): + meminfo = read_proc_meminfo() + self.start_avail_kib = meminfo.get("MemAvailable") + self.min_avail_kib = self.start_avail_kib + + while not self.stop_event.is_set(): + # Process-tree RSS + _, tree_rss_kib = get_descendant_pids(self.root_pid) + if tree_rss_kib > self.peak_tree_rss_kib: + self.peak_tree_rss_kib = tree_rss_kib + + # Cgroup + cur_cg, peak_cg = read_cgroup_memory() + if peak_cg and peak_cg > self.peak_cgroup_bytes: + self.peak_cgroup_bytes = peak_cg + elif cur_cg and cur_cg > self.peak_cgroup_bytes: + self.peak_cgroup_bytes = cur_cg + + # MemAvailable + cur_info = read_proc_meminfo() + avail = cur_info.get("MemAvailable") + if avail is not None: + if self.min_avail_kib is None or avail < self.min_avail_kib: + self.min_avail_kib = avail + + self.stop_event.wait(self.interval) + + # Write final monitor stats + try: + self.log_file.parent.mkdir(parents=True, exist_ok=True) + with open(self.log_file, "w", encoding="utf-8") as f: + f.write(f"peak_tree_rss_kib={self.peak_tree_rss_kib}\n") + f.write(f"peak_cgroup_bytes={self.peak_cgroup_bytes}\n") + f.write(f"start_avail_kib={self.start_avail_kib or 0}\n") + f.write(f"min_avail_kib={self.min_avail_kib or 0}\n") + except Exception as e: + print(f"[memory-tracker] Failed to write monitor log: {e}", file=sys.stderr) + + +# --------------------------------------------------------------------------- +# Compiler Launcher +# --------------------------------------------------------------------------- + +def run_compiler_launcher(cmd_args): + """Invoked by CMake as compiler launcher: memory-tracker.py """ + t0 = time.monotonic() + proc = subprocess.run(cmd_args) + duration = time.monotonic() - t0 + + ru = resource.getrusage(resource.RUSAGE_CHILDREN) + # ru_maxrss on Linux is in KiB + rss_kib = ru.ru_maxrss + + # Identify source file being compiled + src_file = "unknown" + for arg in cmd_args[1:]: + if arg.endswith((".cxx", ".cpp", ".cc", ".c", ".C")): + src_file = arg + break + + log_path = get_mem_log_path() + try: + log_path.parent.mkdir(parents=True, exist_ok=True) + with open(log_path, "a", encoding="utf-8") as f: + fcntl.flock(f, fcntl.LOCK_EX) + try: + f.write(f"{rss_kib}\t{duration:.2f}\t{proc.returncode}\t{src_file}\n") + finally: + fcntl.flock(f, fcntl.LOCK_UN) + except Exception as e: + # Never fail compilation because of logging error + print(f"[memory-tracker] Logging warning: {e}", file=sys.stderr) + + sys.exit(proc.returncode) + + +# --------------------------------------------------------------------------- +# Report Generator +# --------------------------------------------------------------------------- + +def format_bytes(n_bytes): + if n_bytes >= 1024**3: + return f"{n_bytes / 1024**3:.2f} GB" + if n_bytes >= 1024**2: + return f"{n_bytes / 1024**2:.1f} MB" + return f"{n_bytes / 1024:.0f} KB" + + +def format_kib(kib): + return format_bytes(kib * 1024) + + +def round_memory_str(bytes_val): + """Round to clean memory string suitable for guess_concurrency (e.g. 4G, 1.5G, 800M).""" + gb = bytes_val / (1024**3) + mb = bytes_val / (1024**2) + if gb >= 2.0: + return f"{round(gb):.0f}G" + elif gb >= 1.0: + return f"{round(gb * 2) / 2:.1f}G".rstrip(".0G") + "G" + else: + # Round to nearest 50M or 100M + rounded_mb = int(round(mb / 50.0) * 50) + return f"{max(100, rounded_mb)}M" + + +def generate_report(build_dir=None, tag="Build"): + mem_log = get_mem_log_path(build_dir) + mon_log = get_monitor_log_path(build_dir) + + workers = [] + if mem_log.exists(): + with open(mem_log, "r", encoding="utf-8") as f: + for line in f: + parts = line.strip().split("\t") + if len(parts) >= 4: + rss_kib = int(parts[0]) + dur = float(parts[1]) + ret = int(parts[2]) + src = parts[3] + workers.append({ + "rss_kib": rss_kib, + "duration": dur, + "ret": ret, + "src": src + }) + + mon_stats = {} + if mon_log.exists(): + with open(mon_log, "r", encoding="utf-8") as f: + for line in f: + if "=" in line: + k, v = line.strip().split("=", 1) + mon_stats[k] = int(v) if v.isdigit() else v + + arch = os.environ.get("DEB_HOST_ARCH", "unknown") + arch_bits = os.environ.get("DEB_HOST_ARCH_BITS", "unknown") + + print("\n" + "=" * 80) + print(f" VTK 9 BUILD MEMORY REPORT [{tag}] (Arch: {arch}, Bits: {arch_bits})") + print("=" * 80) + + if not workers: + print(" [!] No compilation worker records collected.") + else: + # 1. Unweighted metrics (per translation unit) + rss_values = [w["rss_kib"] for w in workers] + rss_values.sort() + n = len(workers) + max_worker = max(workers, key=lambda w: w["rss_kib"]) + mean_rss_kib = sum(rss_values) / n + var_rss_kib = sum((x - mean_rss_kib) ** 2 for x in rss_values) / n + std_rss_kib = math.sqrt(var_rss_kib) + + # Empirical sample quantiles + median_rss_kib = rss_values[n // 2] + sample_p75_kib = rss_values[int(n * 0.75)] + sample_p90_kib = rss_values[int(n * 0.90)] + sample_p95_kib = rss_values[int(n * 0.95)] + + # Parametric percentiles (Mean as p50, Mean + Z * sigma) + param_p50_kib = mean_rss_kib + param_p75_kib = mean_rss_kib + 0.6745 * std_rss_kib + param_p90_kib = mean_rss_kib + 1.2816 * std_rss_kib + param_p95_kib = mean_rss_kib + 1.6449 * std_rss_kib + + # 2. Time-weighted metrics (memory residency per worker-second) + total_time_sec = sum(w["duration"] for w in workers) + if total_time_sec > 0: + tw_mean_rss_kib = sum(w["rss_kib"] * w["duration"] for w in workers) / total_time_sec + tw_var_rss_kib = sum(w["duration"] * (w["rss_kib"] - tw_mean_rss_kib) ** 2 for w in workers) / total_time_sec + tw_std_rss_kib = math.sqrt(tw_var_rss_kib) + + # Parametric time-weighted percentiles (Mean as p50, Mean + Z * sigma) + tw_param_p50_kib = tw_mean_rss_kib + tw_param_p75_kib = tw_mean_rss_kib + 0.6745 * tw_std_rss_kib + tw_param_p90_kib = tw_mean_rss_kib + 1.2816 * tw_std_rss_kib + tw_param_p95_kib = tw_mean_rss_kib + 1.6449 * tw_std_rss_kib + + # Sort workers by rss_kib for time-weighted empirical cumulative percentiles + sorted_by_rss = sorted(workers, key=lambda w: w["rss_kib"]) + cum_time = 0.0 + percentiles = [0.50, 0.75, 0.90, 0.95] + tw_pct = {} + p_idx = 0 + for w in sorted_by_rss: + cum_time += w["duration"] + while p_idx < len(percentiles) and cum_time >= percentiles[p_idx] * total_time_sec: + tw_pct[percentiles[p_idx]] = w["rss_kib"] + p_idx += 1 + for p in percentiles: + if p not in tw_pct: + tw_pct[p] = sorted_by_rss[-1]["rss_kib"] + + tw_sample_median = tw_pct[0.50] + tw_sample_p75 = tw_pct[0.75] + tw_sample_p90 = tw_pct[0.90] + tw_sample_p95 = tw_pct[0.95] + else: + tw_mean_rss_kib = mean_rss_kib + tw_std_rss_kib = std_rss_kib + tw_param_p50_kib = param_p50_kib + tw_param_p75_kib = param_p75_kib + tw_param_p90_kib = param_p90_kib + tw_param_p95_kib = param_p95_kib + tw_sample_median = median_rss_kib + tw_sample_p75 = sample_p75_kib + tw_sample_p90 = sample_p90_kib + tw_sample_p95 = sample_p95_kib + + print(f"Total compilation units tracked: {n}") + if total_time_sec > 0: + print(f"Total worker CPU time: {total_time_sec / 3600:.2f} core-hours ({total_time_sec:.1f}s)") + print(f"Single worker MAX memory: {format_kib(max_worker['rss_kib']):<10} ({max_worker['duration']:.1f}s) in {max_worker['src']}") + print("-" * 80) + print(" Memory Usage Distribution (Parametric: Mean as p50, Mean + Z*stddev):") + print(f" {'Metric':<25} {'Unweighted (per unit)':<25} {'Time-Weighted (per second)':<25}") + print(f" {'-'*25} {'-'*25} {'-'*25}") + print(f" {'Mean (p50)':<25} {format_kib(param_p50_kib):<25} {format_kib(tw_param_p50_kib):<25}") + print(f" {'Std Deviation (sigma)':<25} {format_kib(std_rss_kib):<25} {format_kib(tw_std_rss_kib):<25}") + print(f" {'75th Percentile (p75)':<25} {format_kib(param_p75_kib):<25} {format_kib(tw_param_p75_kib):<25}") + print(f" {'90th Percentile (p90)':<25} {format_kib(param_p90_kib):<25} {format_kib(tw_param_p90_kib):<25}") + print(f" {'95th Percentile (p95)':<25} {format_kib(param_p95_kib):<25} {format_kib(tw_param_p95_kib):<25}") + print("-" * 80) + print(" Empirical / Sample Quantiles (Observed in data):") + print(f" {'Sample Median':<25} {format_kib(median_rss_kib):<25} {format_kib(tw_sample_median):<25}") + print(f" {'Sample 75th Percentile':<25} {format_kib(sample_p75_kib):<25} {format_kib(tw_sample_p75):<25}") + print(f" {'Sample 90th Percentile':<25} {format_kib(sample_p90_kib):<25} {format_kib(tw_sample_p90):<25}") + print(f" {'Sample 95th Percentile':<25} {format_kib(sample_p95_kib):<25} {format_kib(tw_sample_p95):<25}") + + # Time-weighted brackets / histogram + if total_time_sec > 0: + print("-" * 80) + print(" Time-Weighted Memory Residency Breakdown:") + print(f" {'Memory Range':<18} {'Unit Count':<12} {'CPU Time':<15} {'% of Time':<12} {'Cumul %':<10}") + print(f" {'-'*18} {'-'*12} {'-'*15} {'-'*12} {'-'*10}") + brackets = [ + ("< 250 MB", 0, 250 * 1024), + ("250 - 500 MB", 250 * 1024, 500 * 1024), + ("500 MB - 1 GB", 500 * 1024, 1024 * 1024), + ("1.0 - 2.0 GB", 1024 * 1024, 2 * 1024 * 1024), + ("2.0 - 4.0 GB", 2 * 1024 * 1024, 4 * 1024 * 1024), + ("> 4.0 GB", 4 * 1024 * 1024, float("inf")), + ] + cum_pct = 0.0 + for label, low, high in brackets: + b_units = [w for w in workers if low <= w["rss_kib"] < high] + b_time = sum(w["duration"] for w in b_units) + pct = (b_time / total_time_sec) * 100 if total_time_sec > 0 else 0 + cum_pct += pct + if b_units: + print(f" {label:<18} {len(b_units):<12} {b_time:8.1f}s {pct:5.1f}% {cum_pct:5.1f}%") + + # Print top 5 memory hogs + print("-" * 80) + print(" Top 5 Heaviest Compilation Units:") + top_workers = sorted(workers, key=lambda w: w["rss_kib"], reverse=True)[:5] + for rank, w in enumerate(top_workers, 1): + src_display = w["src"] + if len(src_display) > 50: + src_display = "..." + src_display[-47:] + print(f" #{rank}: {format_kib(w['rss_kib']):<10} ({w['duration']:5.1f}s) {src_display}") + + # Monitor aggregate stats + print("-" * 80) + print(" Aggregate Process & System Memory During Build:") + peak_tree_kib = mon_stats.get("peak_tree_rss_kib", 0) + if peak_tree_kib: + print(f" Peak concurrent worker RSS (sum): {format_kib(peak_tree_kib)}") + peak_cg = mon_stats.get("peak_cgroup_bytes", 0) + if peak_cg: + print(f" Peak cgroup memory: {format_bytes(peak_cg)}") + start_avail = mon_stats.get("start_avail_kib", 0) + min_avail = mon_stats.get("min_avail_kib", 0) + if start_avail and min_avail: + ram_drop = start_avail - min_avail + print(f" Initial MemAvailable: {format_kib(start_avail)}") + print(f" Minimum MemAvailable: {format_kib(min_avail)} (net used by build: ~{format_kib(ram_drop)})") + + # Recommendations for guess_concurrency based on time-weighted metrics + if workers: + max_bytes = max_worker["rss_kib"] * 1024 + tw_mean_bytes = tw_mean_rss_kib * 1024 + tw_p95_bytes = tw_param_p95_kib * 1024 + + rec_tw_mean = f"{round_memory_str(max_bytes)},{round_memory_str(tw_mean_bytes)}" + rec_tw_p95 = f"{round_memory_str(max_bytes)},{round_memory_str(tw_p95_bytes)}" + + print("-" * 80) + print(" Recommended guess_concurrency Settings (based on time-weighted residency):") + print(f" Balanced (Max, Time-Weighted Mean): guess_concurrency --require-mem {rec_tw_mean}") + print(f" Conservative (Max, Parametric Time-Weighted P95): guess_concurrency --require-mem {rec_tw_p95}") + print("=" * 80 + "\n") + + +# --------------------------------------------------------------------------- +# Wrap Command +# --------------------------------------------------------------------------- + +def wrap_command(build_dir, tag, command): + """Starts monitor, sets environment, runs command, and prints report on exit.""" + if build_dir: + os.environ["VTK_MEM_LOG"] = str(get_mem_log_path(build_dir)) + os.environ["VTK_MONITOR_LOG"] = str(get_monitor_log_path(build_dir)) + + monitor = MemoryMonitor( + root_pid=os.getpid(), + log_file=get_monitor_log_path(build_dir), + interval=1.0 + ) + monitor.start() + + exit_code = 1 + try: + proc = subprocess.run(command) + exit_code = proc.returncode + finally: + monitor.stop_event.set() + monitor.join(timeout=3.0) + generate_report(build_dir, tag=tag) + + sys.exit(exit_code) + + +# --------------------------------------------------------------------------- +# CLI Entry Point +# --------------------------------------------------------------------------- + +def main(): + if len(sys.argv) < 2: + print("Usage: memory-tracker.py [wrap|report] ... OR ", file=sys.stderr) + sys.exit(1) + + subcmd = sys.argv[1] + if subcmd == "report": + build_dir = None + tag = "Build" + args = sys.argv[2:] + while args: + if args[0] == "--build-dir" and len(args) > 1: + build_dir = args[1] + args = args[2:] + elif args[0] == "--tag" and len(args) > 1: + tag = args[1] + args = args[2:] + else: + args = args[1:] + generate_report(build_dir, tag=tag) + sys.exit(0) + + elif subcmd == "wrap": + build_dir = None + tag = "Build" + cmd = [] + i = 2 + while i < len(sys.argv): + if sys.argv[i] == "--build-dir" and i + 1 < len(sys.argv): + build_dir = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == "--tag" and i + 1 < len(sys.argv): + tag = sys.argv[i + 1] + i += 2 + elif sys.argv[i] == "--": + cmd = sys.argv[i + 1:] + break + else: + cmd = sys.argv[i:] + break + if not cmd: + print("Error: wrap requires a command to execute after '--'", file=sys.stderr) + sys.exit(1) + wrap_command(build_dir, tag, cmd) + + else: + # Invoked as compiler launcher by CMake + run_compiler_launcher(sys.argv[1:]) + + +if __name__ == "__main__": + main() diff --git a/not-installed b/not-installed new file mode 100644 index 000000000..09ba84969 --- /dev/null +++ b/not-installed @@ -0,0 +1,5 @@ +# viskores.pc is not built on 32-bit systems +# and so is installed conditionally to libvtk9-dev in debian/rules. +# This non-installed entry is needed for arch-independent builds +# to workaround debhelper Bug#972222. +usr/lib/*/pkgconfig/viskores.pc diff --git a/patches/100_add_missing_gl_header.patch b/patches/100_add_missing_gl_header.patch new file mode 100644 index 000000000..e939ca047 --- /dev/null +++ b/patches/100_add_missing_gl_header.patch @@ -0,0 +1,16 @@ +Description: Add missing GL header +Author: Anton Gladky +Forwarded: not-needed +Last-Update: 2024-01-10 + +--- a/GUISupport/Qt/QVTKOpenGLWindow.cxx ++++ b/GUISupport/Qt/QVTKOpenGLWindow.cxx +@@ -22,6 +22,8 @@ + #include "vtkObjectFactory.h" + #include "vtkOpenGLState.h" + ++#include ++ + VTK_ABI_NAMESPACE_BEGIN + QVTKOpenGLWindow::QVTKOpenGLWindow(QOpenGLWindow::UpdateBehavior ub, QWindow* p) + : QVTKOpenGLWindow(vtkSmartPointer::New(), nullptr, ub, p) diff --git a/patches/10_matplotlib.patch b/patches/10_matplotlib.patch new file mode 100644 index 000000000..3e739a948 --- /dev/null +++ b/patches/10_matplotlib.patch @@ -0,0 +1,16 @@ +Description: _matplotlib +Index: VTK-9.3.0/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.h +=================================================================== +--- VTK-9.3.0.orig/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.h ++++ VTK-9.3.0/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.h +@@ -190,6 +190,10 @@ private: + * to implement IsAvailable. + */ + static Availability CheckMPLAvailability(); ++ static void DisableMPL() ++ { ++ MPLMathTextAvailable = UNAVAILABLE; ++ }; + + ///@{ + /** diff --git a/patches/20_do_not_link_against_socket.patch b/patches/20_do_not_link_against_socket.patch new file mode 100644 index 000000000..15f4bf44a --- /dev/null +++ b/patches/20_do_not_link_against_socket.patch @@ -0,0 +1,16 @@ +Description: Do not try linking with -lsocket + +Index: VTK-9.3.0/Common/System/vtkTestSocketFeatures.cmake +=================================================================== +--- VTK-9.3.0.orig/Common/System/vtkTestSocketFeatures.cmake ++++ VTK-9.3.0/Common/System/vtkTestSocketFeatures.cmake +@@ -11,9 +11,6 @@ check_library_exists("socket" getsocknam + + if(NOT DEFINED VTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T) + set(VTK_GETSOCKNAME_LIBS) +- if(VTK_HAVE_LIBSOCKET) +- list(APPEND VTK_GETSOCKNAME_LIBS "socket") +- endif() + message(STATUS "Checking for getsockname with socklen_t") + try_compile(VTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T_COMPILED + ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/SocklenT diff --git a/patches/50_fix_python-modules_path.patch b/patches/50_fix_python-modules_path.patch new file mode 100644 index 000000000..b65e81ba3 --- /dev/null +++ b/patches/50_fix_python-modules_path.patch @@ -0,0 +1,62 @@ +Description: Fix path for the installation of python modules +Author: Anton Gladky +Last-Update: 2020-11-06 + +Index: vtk9/CMake/vtkModuleWrapPython.cmake +=================================================================== +--- vtk9.orig/CMake/vtkModuleWrapPython.cmake ++++ vtk9/CMake/vtkModuleWrapPython.cmake +@@ -82,7 +82,7 @@ function (vtk_module_python_default_dest + "for Python modules.") + set(_vtk_python_version_suffix) + endif () +- set(destination "${CMAKE_INSTALL_LIBDIR}/python${_vtk_python_version_suffix}/site-packages") ++ set(destination "lib/python3/dist-packages") + endif () + + set("${var}" "${destination}" PARENT_SCOPE) +Index: vtk9/Utilities/Python/CMakeLists.txt +=================================================================== +--- vtk9.orig/Utilities/Python/CMakeLists.txt ++++ vtk9/Utilities/Python/CMakeLists.txt +@@ -54,7 +54,7 @@ if (NOT VTK_PYTHON_SITE_PACKAGES_SUFFIX) + set(VTK_PYTHON_SITE_PACKAGES_SUFFIX "Lib/site-packages") + else () + set(VTK_PYTHON_SITE_PACKAGES_SUFFIX +- "python${vtk_python_version_pair}/site-packages") ++ "python3/dist-packages") + endif () + endif () + +Index: vtk9/Wrapping/Python/vtkmodules/__init__.py.in +=================================================================== +--- vtk9.orig/Wrapping/Python/vtkmodules/__init__.py.in ++++ vtk9/Wrapping/Python/vtkmodules/__init__.py.in +@@ -8,21 +8,20 @@ import importlib.util + from pathlib import Path + + from importlib.abc import MetaPathFinder +-from importlib.machinery import ExtensionFileLoader ++from importlib.machinery import ExtensionFileLoader, EXTENSION_SUFFIXES + + LOADING_STACK = [] +-LIB_EXTS = [".pyd", ".so"] ++ + + def find_lib_path(paths, vtk_module_name): +- for ext in LIB_EXTS: ++ for ext in EXTENSION_SUFFIXES: + for base_path in paths: + # vtk-wheel => vtkCommonCore.cpython-310-darwin.so + # paraview => vtkCommonCore.so + # Caution: vtkIOXML vs vtkIOXMLParser +- for f in Path(base_path).glob(f"{vtk_module_name}[.-]*"): +- resolved_file = f.resolve() +- if resolved_file.is_file() and ext in resolved_file.suffixes: +- return str(resolved_file) ++ f = Path(base_path) / f"{vtk_module_name}{ext}" ++ if f.is_file(): ++ return str(f.resolve()) + + + class VTKMetaHook(MetaPathFinder): diff --git a/patches/60_fix_path_perl.patch b/patches/60_fix_path_perl.patch new file mode 100644 index 000000000..2a50bd7a8 --- /dev/null +++ b/patches/60_fix_path_perl.patch @@ -0,0 +1,64 @@ +Description: Fix shebang for the perl scripts +Author: Anton Gladky +Last-Update: 2020-11-08 + +Index: VTK-9.3.0/Utilities/Doxygen/doc_class2example.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_class2example.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_class2example.pl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env perl ++#!/usr/bin/perl + # Time-stamp: <2004-06-09 11:12:38 barre> + # + # Build cross-references between classes and examples +Index: VTK-9.3.0/Utilities/Doxygen/doc_cleanhtml.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_cleanhtml.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_cleanhtml.pl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env perl ++#!/usr/bin/perl + # Time-stamp: <2002-10-25 20:17:59 barre> + # + # Clean the HTML generated by Doxygen to remove some layout quicks +Index: VTK-9.3.0/Utilities/Doxygen/doc_codematch.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_codematch.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_codematch.pl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env perl ++#!/usr/bin/perl + # Time-stamp: <2002-01-18 16:17:26 barre> + # + # Summary ? +Index: VTK-9.3.0/Utilities/Doxygen/doc_index.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_index.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_index.pl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env perl ++#!/usr/bin/perl + # Time-stamp: <2001-11-21 17:40:48 barre> + # + # Build full-text index +Index: VTK-9.3.0/Utilities/Doxygen/doc_rmpath.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_rmpath.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_rmpath.pl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env perl ++#!/usr/bin/perl + # Time-stamp: <2001-10-05 11:49:40 barre> + # + # Remove path to intermediate Doxygen dir from html doc +Index: VTK-9.3.0/Utilities/Doxygen/doc_version.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_version.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_version.pl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env perl ++#!/usr/bin/perl + # Time-stamp: <2006-11-15 13:25:02 barre> + # + # Extract VTK version and add it to documentation diff --git a/patches/80_fix_ppc64_ftbfs.patch b/patches/80_fix_ppc64_ftbfs.patch new file mode 100644 index 000000000..3dfb69558 --- /dev/null +++ b/patches/80_fix_ppc64_ftbfs.patch @@ -0,0 +1,16 @@ +Description: Fix FTBFS on PPC64: inlining failed in call to ‘always_inline’ +Author: Dominique Belhachemi +Forwarded: not-needed +Last-Update: 2025-09-30 + +--- vtk9.orig/Common/Core/vtkDataArrayMeta.h ++++ vtk9/Common/Core/vtkDataArrayMeta.h +@@ -32,7 +32,7 @@ + #endif + + #if (defined(VTK_ALWAYS_OPTIMIZE_ARRAY_ITERATORS) || !defined(VTK_DEBUG_RANGE_ITERATORS)) && \ +- !defined(VTK_COMPILER_MSVC) ++ !defined(VTK_COMPILER_MSVC) && !defined(__PPC64__) + #define VTK_ITER_INLINE VTK_ALWAYS_INLINE + #define VTK_ITER_ASSUME VTK_ASSUME_NO_ASSERT + #define VTK_ITER_OPTIMIZE_START VTK_ALWAYS_OPTIMIZE_START diff --git a/patches/84_vtkQWidgetTexture_no_vtkOpenGLCheckErrorMacro.patch b/patches/84_vtkQWidgetTexture_no_vtkOpenGLCheckErrorMacro.patch new file mode 100644 index 000000000..206b73ed7 --- /dev/null +++ b/patches/84_vtkQWidgetTexture_no_vtkOpenGLCheckErrorMacro.patch @@ -0,0 +1,26 @@ +Description: HACK: vtkQWidgetTexture.cxx: Don't use vtkOpenGLCheckErrorMacro + Fixes building for Qt with OpenGL ES. +Author: Adrian Bunk + +Index: VTK-9.3.0/GUISupport/Qt/vtkQWidgetTexture.cxx +=================================================================== +--- VTK-9.3.0.orig/GUISupport/Qt/vtkQWidgetTexture.cxx ++++ VTK-9.3.0/GUISupport/Qt/vtkQWidgetTexture.cxx +@@ -7,7 +7,7 @@ + #include "vtkOpenGLResourceFreeCallback.h" + #include "vtkOpenGLState.h" + +-#include "vtkOpenGLError.h" ++//#include "vtkOpenGLError.h" + + #include + #include +@@ -88,7 +88,7 @@ vtkQWidgetTexture::vtkQWidgetTexture() + } + + this->Create2DFromRaw(width, height, 4, VTK_UNSIGNED_CHAR, this->ImageBuffer); +- vtkOpenGLCheckErrorMacro("failed after QWidgeTexture repaint and draw"); ++ //vtkOpenGLCheckErrorMacro("failed after QWidgeTexture repaint and draw"); + } + }; + } diff --git a/patches/97_reproducible_builds.patch b/patches/97_reproducible_builds.patch new file mode 100644 index 000000000..b5ee14187 --- /dev/null +++ b/patches/97_reproducible_builds.patch @@ -0,0 +1,22 @@ +From c3f5613299c9dfdee66709674a6cafafb6576137 Mon Sep 17 00:00:00 2001 +From: Vagrant Cascadian +Date: Tue, 15 Dec 2020 07:38:56 +0000 +Subject: [PATCH 2/2] doc_class2example.pl: Sort the parsers array. + +Thanks to Bernhard M. Wiedemann . +--- + Utilities/Doxygen/doc_class2example.pl | 1 + + 1 file changed, 1 insertion(+) + +Index: VTK-9.3.0/Utilities/Doxygen/doc_class2example.pl +=================================================================== +--- VTK-9.3.0.orig/Utilities/Doxygen/doc_class2example.pl ++++ VTK-9.3.0/Utilities/Doxygen/doc_class2example.pl +@@ -261,6 +261,7 @@ if (exists $args{"parser"}) { + } else { + @parsers = keys %parsers; + } ++@parsers = sort @parsers; + + my $os_is_win = ($^O =~ m/(MSWin32|Cygwin)/i); + my $open_file_as_text = $os_is_win ? O_TEXT : 0; diff --git a/patches/98_fix_mpi4py.py b/patches/98_fix_mpi4py.py new file mode 100644 index 000000000..71f1423e8 --- /dev/null +++ b/patches/98_fix_mpi4py.py @@ -0,0 +1,13 @@ +Description: Fix mpi4py search +Author: Anton Gladky +Last-Update: 2021-09-17 + +Index: VTK-9.3.0/Parallel/MPI4Py/vtk.module +=================================================================== +--- VTK-9.3.0.orig/Parallel/MPI4Py/vtk.module ++++ VTK-9.3.0/Parallel/MPI4Py/vtk.module +@@ -16,4 +16,3 @@ DEPENDS + PRIVATE_DEPENDS + VTK::ParallelMPI + VTK::mpi +- VTK::mpi4py diff --git a/patches/99_fix_ftbfs.patch b/patches/99_fix_ftbfs.patch new file mode 100644 index 000000000..b7cc0e768 --- /dev/null +++ b/patches/99_fix_ftbfs.patch @@ -0,0 +1,17 @@ +Description: Fix FTBFS +Author: Anton Gladky +Last-Update: 2021-11-14 + +Index: VTK-9.3.0/CMake/vtkCompilerExtraFlags.cmake +=================================================================== +--- VTK-9.3.0.orig/CMake/vtkCompilerExtraFlags.cmake ++++ VTK-9.3.0/CMake/vtkCompilerExtraFlags.cmake +@@ -3,7 +3,7 @@ if(CMAKE_COMPILER_IS_GNUCXX) + include(CheckCXXCompilerFlag) + + # Additional warnings for GCC +- set(CMAKE_CXX_FLAGS_WARN "-Wnon-virtual-dtor -Wno-long-long -ansi -Wcast-align -Wchar-subscripts -Wall -Wextra -Wpointer-arith -Wformat-security -Woverloaded-virtual -Wshadow -Wunused-parameter -fno-check-new -fno-common -Werror=undef") ++ set(CMAKE_CXX_FLAGS_WARN "-Wnon-virtual-dtor -Wno-long-long -ansi -Wcast-align -Wchar-subscripts -Wall -Wextra -Wpointer-arith -Wformat-security -Woverloaded-virtual -Wshadow -Wunused-parameter -fno-check-new -fno-common") + + # This flag is useful as not returning from a non-void function is an error + # with MSVC, but it is not supported on all GCC compiler versions diff --git a/patches/build_reproducibility.patch b/patches/build_reproducibility.patch new file mode 100644 index 000000000..74255a6cc --- /dev/null +++ b/patches/build_reproducibility.patch @@ -0,0 +1,18 @@ +Description: Avoid embedding build system information for reproducibility + Drop XDMF_SYSTEM definition from XdmfConfig.h.in to ensure reproducible builds. +Forwarded: not-needed +Author: Debian Science Maintainers + +Index: vtk9/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfConfig.h.in +=================================================================== +--- vtk9.orig/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfConfig.h.in 2026-06-20 13:37:48.365606265 +0200 ++++ vtk9/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfConfig.h.in 2026-07-01 11:51:37.458361908 +0200 +@@ -32,8 +32,6 @@ + #define XDMF_BYTE_ORDER_LITTLE + #endif + +-#define XDMF_SYSTEM ${CMAKE_SYSTEM} +- + #cmakedefine XDMF_VOID_VALID + #ifndef XDMF_VOID_VALID + /* Force an Error */ diff --git a/patches/cve_2025_57106.patch b/patches/cve_2025_57106.patch new file mode 100644 index 000000000..827f0683b --- /dev/null +++ b/patches/cve_2025_57106.patch @@ -0,0 +1,151 @@ +Description: vtkGLTFDocumentLoader: Fix invalid access for CVE-2025-57106 +Origin: upstream, https://gitlab.kitware.com/vtk/vtk/-/commit/bd93e0533bfff2e8519ff557a0a8637a76e5fc1b https://gitlab.kitware.com/vtk/vtk/-/commit/04b2e001539d843c0f6b52239aa0fecd5b967dc7 +Author: Mathieu Westphal +Bug-Debian: https://bugs.debian.org/1119821 + +Index: vtk9/IO/Geometry/vtkGLTFDocumentLoader.cxx +=================================================================== +--- vtk9.orig/IO/Geometry/vtkGLTFDocumentLoader.cxx ++++ vtk9/IO/Geometry/vtkGLTFDocumentLoader.cxx +@@ -315,37 +315,31 @@ struct vtkGLTFDocumentLoader::AccessorLo + * ExecuteBufferDataExtractionWorker, forwarding template types and parameters. + */ + template +- void DispatchWorkerExecutionByComponentType( ++ bool DispatchWorkerExecutionByComponentType( + ArrayType* output, const Accessor& accessor, const BufferView& bufferView) + { + switch (accessor.ComponentTypeValue) + { + case ComponentType::BYTE: +- this->ExecuteBufferDataExtractionWorker( ++ return this->ExecuteBufferDataExtractionWorker( + output, accessor, bufferView); +- break; + case ComponentType::UNSIGNED_BYTE: +- this->ExecuteBufferDataExtractionWorker( ++ return this->ExecuteBufferDataExtractionWorker( + output, accessor, bufferView); +- break; + case ComponentType::SHORT: +- this->ExecuteBufferDataExtractionWorker( ++ return this->ExecuteBufferDataExtractionWorker( + output, accessor, bufferView); +- break; + case ComponentType::UNSIGNED_SHORT: +- this->ExecuteBufferDataExtractionWorker( ++ return this->ExecuteBufferDataExtractionWorker( + output, accessor, bufferView); +- break; + case ComponentType::UNSIGNED_INT: +- this->ExecuteBufferDataExtractionWorker( ++ return this->ExecuteBufferDataExtractionWorker( + output, accessor, bufferView); +- break; + case ComponentType::FLOAT: +- this->ExecuteBufferDataExtractionWorker( ++ return this->ExecuteBufferDataExtractionWorker( + output, accessor, bufferView); +- break; + default: +- return; ++ return false; + } + } + +@@ -354,17 +348,17 @@ struct vtkGLTFDocumentLoader::AccessorLo + * forwarding template types and parameters. + */ + template +- void DispatchWorkerExecution( ++ bool DispatchWorkerExecution( + ArrayType* output, const Accessor& accessor, const BufferView& bufferView) + { + if (accessor.Normalized || accessor.ComponentTypeValue == ComponentType::FLOAT) + { +- this->DispatchWorkerExecutionByComponentType( ++ return this->DispatchWorkerExecutionByComponentType( + output, accessor, bufferView); + } + else + { +- this->DispatchWorkerExecutionByComponentType( ++ return this->DispatchWorkerExecutionByComponentType( + output, accessor, bufferView); + } + } +@@ -373,9 +367,15 @@ struct vtkGLTFDocumentLoader::AccessorLo + * Creates a new BufferDataExtractionWorker, initializes it and starts its execution + */ + template +- void ExecuteBufferDataExtractionWorker( ++ bool ExecuteBufferDataExtractionWorker( + ArrayType* output, const Accessor& accessor, const BufferView& bufferView) + { ++ if (bufferView.Buffer < 0 || bufferView.Buffer >= static_cast(this->Buffers->size())) ++ { ++ vtkErrorWithObjectMacro(nullptr, "Invalid buffer index:" << bufferView.Buffer); ++ return false; ++ } ++ + // Create worker + BufferDataExtractionWorker worker; + // Set worker parameters +@@ -390,6 +390,7 @@ struct vtkGLTFDocumentLoader::AccessorLo + + // Start worker execution + vtkArrayDispatch::DispatchByValueType::Execute(output, worker); ++ return true; + } + + void Setup(int accessorId, vtkGLTFDocumentLoader::AccessorType expectedType) +@@ -419,13 +420,18 @@ struct vtkGLTFDocumentLoader::AccessorLo + } + + // Load base accessor data +- if (accessor.BufferView >= 0) ++ if (accessor.BufferView >= 0 && ++ accessor.BufferView < static_cast(this->BufferViews->size())) + { + const BufferView& bufferView = this->BufferViews->operator[](accessor.BufferView); + + output->SetNumberOfComponents(GetNumberOfComponentsForType(this->ExpectedType)); + +- DispatchWorkerExecution(output, accessor, bufferView); ++ if (!DispatchWorkerExecution(output, accessor, bufferView)) ++ { ++ this->Result = false; ++ return; ++ } + } + else if (!accessor.IsSparse) + { +@@ -457,7 +463,12 @@ struct vtkGLTFDocumentLoader::AccessorLo + mockIndicesAccessor.NumberOfComponents = 1; + mockIndicesAccessor.ComponentTypeValue = sparse.IndicesComponentType; + +- DispatchWorkerExecution(sparseIndices, mockIndicesAccessor, indicesBufferView); ++ if (!DispatchWorkerExecution( ++ sparseIndices, mockIndicesAccessor, indicesBufferView)) ++ { ++ this->Result = false; ++ return; ++ } + + // Load values + vtkNew sparseValues; +@@ -467,8 +478,12 @@ struct vtkGLTFDocumentLoader::AccessorLo + mockValuesAccessor.Count = sparse.Count; + mockValuesAccessor.ByteOffset = sparse.ValuesByteOffset; + +- DispatchWorkerExecution( +- sparseValues.GetPointer(), mockValuesAccessor, valuesBufferView); ++ if (!DispatchWorkerExecution( ++ sparseValues.GetPointer(), mockValuesAccessor, valuesBufferView)) ++ { ++ this->Result = false; ++ return; ++ } + + // Replace values into original (non sparse) array + for (int id = 0; id < sparseIndices->GetNumberOfValues(); id++) diff --git a/patches/cve_2025_57107.patch b/patches/cve_2025_57107.patch new file mode 100644 index 000000000..86a790e4b --- /dev/null +++ b/patches/cve_2025_57107.patch @@ -0,0 +1,23 @@ +Description: vtkGLTFDocumentLoader: Fix an invalid access for CVE-2025-57107 +Origin: upstream, https://gitlab.kitware.com/vtk/vtk/-/commit/0aafd788bb920719f875f16ea1149712aa9099df +Author: Mathieu Westphal +Bug-Debian: https://bugs.debian.org/1119822 + +Index: vtk9/IO/Geometry/vtkGLTFDocumentLoader.cxx +=================================================================== +--- vtk9.orig/IO/Geometry/vtkGLTFDocumentLoader.cxx ++++ vtk9/IO/Geometry/vtkGLTFDocumentLoader.cxx +@@ -704,6 +704,13 @@ bool vtkGLTFDocumentLoader::ExtractPrimi + // Load all attributes + for (auto& attributePair : primitive.AttributeIndices) + { ++ if (attributePair.second < 0 || ++ attributePair.second >= static_cast(this->InternalModel->Accessors.size())) ++ { ++ vtkErrorMacro("Invalid accessor index: " << attributePair.second); ++ return false; ++ } ++ + Accessor accessor = this->InternalModel->Accessors[attributePair.second]; + // Create array + if (attributePair.first == "JOINTS_0") diff --git a/patches/cve_2025_57108.patch b/patches/cve_2025_57108.patch new file mode 100644 index 000000000..579cba117 --- /dev/null +++ b/patches/cve_2025_57108.patch @@ -0,0 +1,23 @@ +Description: vtkGLTFImporter: Fix a invalid vector access CVE-2025-57108 +Origin: upstream, https://gitlab.kitware.com/vtk/vtk/-/commit/ce07e9aef763d20d0f425386eef84226936ff3f4 +Author: Mathieu Westphal +Bug-Debian: https://bugs.debian.org/1119823 + +Index: vtk9/IO/Import/vtkGLTFImporter.cxx +=================================================================== +--- vtk9.orig/IO/Import/vtkGLTFImporter.cxx ++++ vtk9/IO/Import/vtkGLTFImporter.cxx +@@ -668,6 +668,13 @@ void vtkGLTFImporter::ImportActors(vtkRe + // Import node's geometry + if (node.Mesh >= 0) + { ++ if (node.Mesh >= static_cast(model->Meshes.size())) ++ { ++ vtkErrorMacro("Invalid node mesh index, aborting."); ++ this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); ++ return; ++ } ++ + auto mesh = model->Meshes[node.Mesh]; + int primitiveId = 0; + for (auto primitive : mesh.Primitives) diff --git a/patches/cve_2025_57109.patch b/patches/cve_2025_57109.patch new file mode 100644 index 000000000..1acef34c0 --- /dev/null +++ b/patches/cve_2025_57109.patch @@ -0,0 +1,47 @@ +Description: vtkGLTFImporter: Fix invalid access for CVE-2025-57109 +Origin: upstream, https://gitlab.kitware.com/vtk/vtk/-/commit/79375066e52db70e61dbaef7d941d642daf2dc09 +Author: Mathieu Westphal +Bug-Debian: https://bugs.debian.org/1119824 + +Index: vtk9/IO/Import/vtkGLTFImporter.cxx +=================================================================== +--- vtk9.orig/IO/Import/vtkGLTFImporter.cxx ++++ vtk9/IO/Import/vtkGLTFImporter.cxx +@@ -649,6 +649,13 @@ void vtkGLTFImporter::ImportActors(vtkRe + // Get current node + const int nodeId = nodeIdStack.top(); + nodeIdStack.pop(); ++ if (nodeId < 0 || nodeId >= static_cast(model->Nodes.size())) ++ { ++ vtkErrorMacro("Invalid node index: " << nodeId << " , aborting."); ++ this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); ++ return; ++ } ++ + const auto& node = model->Nodes[nodeId]; + + // Add this node into the scene hierarchy +@@ -670,7 +677,7 @@ void vtkGLTFImporter::ImportActors(vtkRe + { + if (node.Mesh >= static_cast(model->Meshes.size())) + { +- vtkErrorMacro("Invalid node mesh index, aborting."); ++ vtkErrorMacro("Invalid node mesh index: " << node.Mesh << " , aborting."); + this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); + return; + } +@@ -835,6 +842,14 @@ void vtkGLTFImporter::ImportCameras(vtkR + // Get current node + int nodeId = nodeIdStack.top(); + nodeIdStack.pop(); ++ ++ if (nodeId < 0 || nodeId >= static_cast(model->Nodes.size())) ++ { ++ vtkErrorMacro("Invalid nodeId: " << nodeId << ", aborting."); ++ this->SetUpdateStatus(vtkImporter::UpdateStatusEnum::FAILURE); ++ return; ++ } ++ + const vtkGLTFDocumentLoader::Node& node = model->Nodes[nodeId]; + + // Import node's camera diff --git a/patches/dont_install_bundled_cmake_finders.patch b/patches/dont_install_bundled_cmake_finders.patch new file mode 100644 index 000000000..18f115c91 --- /dev/null +++ b/patches/dont_install_bundled_cmake_finders.patch @@ -0,0 +1,16 @@ +Description: Do not install VTK's bundled patches/99/FindHDF5.cmake + Debian's VTK doesn't contain the HDF5 library +Author: Dominique Belhachemi +Forwarded: not-needed +Last-Update: 2026-09-12 + +--- vtk9.orig/CMake/vtkInstallCMakePackage.cmake ++++ vtk9/CMake/vtkInstallCMakePackage.cmake +@@ -174,7 +174,6 @@ set(vtk_cmake_patch_files + patches/3.23/FindPython/Support.cmake + patches/3.23/FindPython3.cmake + patches/4.3/FindSQLite3.cmake +- patches/99/FindHDF5.cmake + patches/99/FindOpenGL.cmake + patches/99/FindX11.cmake) + set(vtk_cmake_wasm_files diff --git a/patches/dont_install_h5hut_config_h.patch b/patches/dont_install_h5hut_config_h.patch new file mode 100644 index 000000000..1bebc8a6d --- /dev/null +++ b/patches/dont_install_h5hut_config_h.patch @@ -0,0 +1,26 @@ +Description: Do not install internal h5hut config.h into public header directory + Move config.h from public headers to private_headers in vtkh5hut to avoid + defining generic autoconf PACKAGE_* macros in public header paths. +Forwarded: not-needed +Author: Debian Science Maintainers + +--- a/ThirdParty/h5hut/vtkh5hut/CMakeLists.txt ++++ b/ThirdParty/h5hut/vtkh5hut/CMakeLists.txt +@@ -51,8 +51,7 @@ + src/include/H5Part_io.h + src/include/H5Part_model.h + src/include/vtk_h5hut_mangle.h +- "${CMAKE_CURRENT_BINARY_DIR}/src/include/vtkh5hut_export.h" +- "${CMAKE_CURRENT_BINARY_DIR}/src/include/config.h") ++ "${CMAKE_CURRENT_BINARY_DIR}/src/include/vtkh5hut_export.h") + + set(sources + src/h5core/h5_attachments.c +@@ -78,6 +77,7 @@ + src/h5core/h5u_model.c) + + set(private_headers ++ "${CMAKE_CURRENT_BINARY_DIR}/src/include/config.h" + src/h5core/private/h5_attribs.h + src/h5core/private/h5_const.h + src/h5core/private/h5_err.h diff --git a/patches/fix_invalid_escape_sequence_testing.patch b/patches/fix_invalid_escape_sequence_testing.patch new file mode 100644 index 000000000..b658e4b08 --- /dev/null +++ b/patches/fix_invalid_escape_sequence_testing.patch @@ -0,0 +1,17 @@ +Description: fix invalid escape sequence in testing.py +Origin: upstream, https://gitlab.kitware.com/vtk/vtk/-/commit/c0ec1384318bf93c0d2e8b046f702860d4a3195c +Author: Dominique Belhachemi +Bug-Debian: https://bugs.debian.org/1142155 +Bug-Debian: https://bugs.debian.org/1079541 + +--- a/Web/Python/vtkmodules/web/testing.py ++++ b/Web/Python/vtkmodules/web/testing.py +@@ -684,7 +684,7 @@ + # The test name will be generated from the python script name, so + # match and capture a bunch of contiguous characters which are + # not '.', '\', or '/', followed immediately by the string '.py'. +- fnamePattern = re.compile("([^\.\/\\\]+)\.py") ++ fnamePattern = re.compile(r"([^./\\]+)\.py") + fmatch = re.search(fnamePattern, testScriptFile) + if fmatch: + testName = fmatch.group(1) diff --git a/patches/fix_sequence_h_utf8_encoding.patch b/patches/fix_sequence_h_utf8_encoding.patch new file mode 100644 index 000000000..206dcb867 --- /dev/null +++ b/patches/fix_sequence_h_utf8_encoding.patch @@ -0,0 +1,15 @@ +Description: Convert non-UTF-8 character in Sequence.h to UTF-8 + Fix national-encoding warning by replacing ISO-8859-1 umlaut with UTF-8. +Forwarded: not-needed +Author: Debian Science Maintainers + +--- a/ThirdParty/xdmf3/vtkxdmf3/core/loki/Sequence.h ++++ b/ThirdParty/xdmf3/vtkxdmf3/core/loki/Sequence.h +@@ -1,6 +1,6 @@ + //////////////////////////////////////////////////////////////////////////////// + // The Loki Library +-// Copyright (c) 2005 by Peter Kümmel ++// Copyright (c) 2005 by Peter Kümmel + // Permission to use, copy, modify, distribute and sell this software for any + // purpose is hereby granted without fee, provided that the above copyright + // notice appear in all copies and that both that copyright notice and this diff --git a/patches/fix_xmlwriter_ascii_implicit_cellarray_segfault.patch b/patches/fix_xmlwriter_ascii_implicit_cellarray_segfault.patch new file mode 100644 index 000000000..4bb31ee48 --- /dev/null +++ b/patches/fix_xmlwriter_ascii_implicit_cellarray_segfault.patch @@ -0,0 +1,52 @@ +Description: Fix segfault writing ascii .vtu files with implicit cell type arrays + NewIterator() returns nullptr for the implicit cell-type arrays used + since VTK 9.6, so WriteAsciiData() dereferenced that nullptr in + iter->Delete(). Merely guarding the Delete() is not enough: the + templated writer already returns early on a null iterator, so the array + is then written empty, and since WriteInlineData() discards the return + value the writer reports success for a file which has lost all of its + cells. Write such arrays through an explicit copy instead. + Closes yade FTBFS. +Forwarded: not-yet +Author: Anton Gladky + +Index: vtk9/IO/XML/vtkXMLWriter.cxx +=================================================================== +--- vtk9.orig/IO/XML/vtkXMLWriter.cxx ++++ vtk9/IO/XML/vtkXMLWriter.cxx +@@ -34,6 +34,7 @@ + #include "vtkOutputStream.h" + #include "vtkPointData.h" + #include "vtkPoints.h" ++#include "vtkSmartPointer.h" + #include "vtkStdString.h" + #include "vtkStreamingDemandDrivenPipeline.h" + #include "vtkStringFormatter.h" +@@ -1968,6 +1969,15 @@ int vtkXMLWriteAsciiData(ostream& os, it + int vtkXMLWriter::WriteAsciiData(vtkAbstractArray* a, vtkIndent indent) + { + vtkArrayIterator* iter = a->NewIterator(); ++ vtkSmartPointer copy; ++ if (!iter) ++ { ++ // Arrays which provide no iterator, such as the implicit arrays used since VTK 9.6 ++ // for uniform cell types, are written through an explicit copy. ++ copy.TakeReference(vtkAbstractArray::CreateArray(a->GetDataType())); ++ copy->DeepCopy(a); ++ iter = copy->NewIterator(); ++ } + ostream& os = *(this->Stream); + int ret; + switch (a->GetDataType()) +@@ -1978,7 +1988,10 @@ int vtkXMLWriter::WriteAsciiData(vtkAbst + ret = 0; + break; + } +- iter->Delete(); ++ if (iter) ++ { ++ iter->Delete(); ++ } + return ret; + } + diff --git a/patches/gdal-3.13.patch b/patches/gdal-3.13.patch new file mode 100644 index 000000000..6eb5a546b --- /dev/null +++ b/patches/gdal-3.13.patch @@ -0,0 +1,37 @@ +Description: Fix FTBFS with GDAL 3.13.0. + error: invalid conversion from 'CSLConstList' {aka 'const char* const*'} to 'char**' [-fpermissive] + . + From GDAL 3.13.0 NEWS: + " + * GDALMajorObject: Use CSLConstList for GetMetadata, SetMetadata (API breakage) + " +Author: Bas Couwenberg + +Index: vtk9/IO/GDAL/vtkGDALRasterReader.cxx +=================================================================== +--- vtk9.orig/IO/GDAL/vtkGDALRasterReader.cxx 2026-06-20 15:53:59.251124679 +0200 ++++ vtk9/IO/GDAL/vtkGDALRasterReader.cxx 2026-06-20 15:53:59.249472560 +0200 +@@ -182,7 +182,11 @@ + this->Reader->DriverShortName = GDALGetDriverShortName(driver); + this->Reader->DriverLongName = GDALGetDriverLongName(driver); + ++#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 13, 0) ++ CSLConstList papszMetaData = GDALGetMetadata(this->GDALData, nullptr); ++#else + char** papszMetaData = GDALGetMetadata(this->GDALData, nullptr); ++#endif + if (CSLCount(papszMetaData) > 0) + { + for (int i = 0; papszMetaData[i] != nullptr; ++i) +@@ -882,7 +886,11 @@ + { + std::vector domainMetaData; + ++#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 13, 0) ++ CSLConstList papszMetadata = GDALGetMetadata(this->Impl->GDALData, domain.c_str()); ++#else + char** papszMetadata = GDALGetMetadata(this->Impl->GDALData, domain.c_str()); ++#endif + + if (CSLCount(papszMetadata) > 0) + { diff --git a/patches/matplotlib_nullptr_s390x.patch b/patches/matplotlib_nullptr_s390x.patch new file mode 100644 index 000000000..9ce1545a9 --- /dev/null +++ b/patches/matplotlib_nullptr_s390x.patch @@ -0,0 +1,22 @@ +Description: Check for null pointer in vtkMatplotlibMathTextUtilities + Check if image scalar pointer is null before accessing to avoid crash on s390x. +Author: Drew Parsons +Forwarded: not-needed + +Index: vtk9/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx +=================================================================== +--- vtk9.orig/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx 2026-06-20 15:53:56.710944340 +0200 ++++ vtk9/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx 2026-06-20 15:53:56.707945159 +0200 +@@ -1023,6 +1023,12 @@ + return false; + } + ++ if (ptr == nullptr) ++ { ++ vtkErrorMacro("image returned null ScalarPointer."); ++ return false; ++ } ++ + // Background, do not load python data + if (row > pythonRowStart || col < pythonColStart || row <= pythonRowEnd || + col >= pythonColEnd) diff --git a/patches/ppc-constexpr.patch b/patches/ppc-constexpr.patch new file mode 100644 index 000000000..aaa86ab07 --- /dev/null +++ b/patches/ppc-constexpr.patch @@ -0,0 +1,16 @@ +Description: Fix ppc64/powerpc constexpr issue +Author: Adrian Bunk +Bug: https://gitlab.kitware.com/vtk/vtk/-/work_items/20090 + +--- a/Infovis/Core/vtkWordCloud.cxx ++++ b/Infovis/Core/vtkWordCloud.cxx +@@ -654,7 +654,8 @@ void ArchimedesSpiral(std::vector + + +- ++ + + + diff --git a/patches/python_version_library_suffix.patch b/patches/python_version_library_suffix.patch new file mode 100644 index 000000000..6325b90f0 --- /dev/null +++ b/patches/python_version_library_suffix.patch @@ -0,0 +1,84 @@ +Description: Allow a Python version suffix for Python-dependent libraries + Used to install these libraries for non-default Python versions. +Author: Maximiliano Curia +Forwarded: not-needed +Last-Update: 2026-09-27 +Index: vtk9/Common/Python/CMakeLists.txt +=================================================================== +--- vtk9.orig/Common/Python/CMakeLists.txt ++++ vtk9/Common/Python/CMakeLists.txt +@@ -2,5 +2,6 @@ set(classes + vtkPythonArchiver) + + vtk_module_add_module(VTK::CommonPython ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes}) + vtk_add_test_mangling(VTK::CommonPython) +Index: vtk9/Filters/Python/CMakeLists.txt +=================================================================== +--- vtk9.orig/Filters/Python/CMakeLists.txt ++++ vtk9/Filters/Python/CMakeLists.txt +@@ -2,5 +2,6 @@ set(classes + vtkPythonAlgorithm) + + vtk_module_add_module(VTK::FiltersPython ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes}) + vtk_add_test_mangling(VTK::FiltersPython) +Index: vtk9/Parallel/MPI4Py/CMakeLists.txt +=================================================================== +--- vtk9.orig/Parallel/MPI4Py/CMakeLists.txt ++++ vtk9/Parallel/MPI4Py/CMakeLists.txt +@@ -2,5 +2,6 @@ set(classes + vtkMPI4PyCommunicator) + + vtk_module_add_module(VTK::ParallelMPI4Py ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes}) + vtk_add_test_mangling(VTK::ParallelMPI4Py) +Index: vtk9/Rendering/Matplotlib/CMakeLists.txt +=================================================================== +--- vtk9.orig/Rendering/Matplotlib/CMakeLists.txt ++++ vtk9/Rendering/Matplotlib/CMakeLists.txt +@@ -10,6 +10,7 @@ vtk_object_factory_configure( + EXPORT_MACRO "VTKRENDERINGMATPLOTLIB_EXPORT") + + vtk_module_add_module(VTK::RenderingMatplotlib ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes} + SOURCES ${vtk_object_factory_source} + PRIVATE_HEADERS ${vtk_object_factory_header}) +Index: vtk9/Rendering/PythonContext2D/CMakeLists.txt +=================================================================== +--- vtk9.orig/Rendering/PythonContext2D/CMakeLists.txt ++++ vtk9/Rendering/PythonContext2D/CMakeLists.txt +@@ -2,5 +2,6 @@ set(classes + vtkPythonItem) + + vtk_module_add_module(VTK::PythonContext2D ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes}) + vtk_add_test_mangling(VTK::PythonContext2D) +Index: vtk9/Utilities/PythonInterpreter/CMakeLists.txt +=================================================================== +--- vtk9.orig/Utilities/PythonInterpreter/CMakeLists.txt ++++ vtk9/Utilities/PythonInterpreter/CMakeLists.txt +@@ -6,6 +6,7 @@ set(headers + vtkPythonStdStreamCaptureHelper.h) + + vtk_module_add_module(VTK::PythonInterpreter ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes} + HEADERS ${headers}) + +Index: vtk9/Web/Core/CMakeLists.txt +=================================================================== +--- vtk9.orig/Web/Core/CMakeLists.txt ++++ vtk9/Web/Core/CMakeLists.txt +@@ -7,5 +7,6 @@ set(classes + vtkWebUtilities) + + vtk_module_add_module(VTK::WebCore ++ LIBRARY_NAME_SUFFIX "${VTK_PYTHON_LIBRARY_NAME_SUFFIX}" + CLASSES ${classes}) + vtk_add_test_mangling(VTK::WebCore) diff --git a/patches/series b/patches/series new file mode 100644 index 000000000..3dfc92768 --- /dev/null +++ b/patches/series @@ -0,0 +1,25 @@ +10_matplotlib.patch +20_do_not_link_against_socket.patch +50_fix_python-modules_path.patch +60_fix_path_perl.patch +80_fix_ppc64_ftbfs.patch +84_vtkQWidgetTexture_no_vtkOpenGLCheckErrorMacro.patch +97_reproducible_builds.patch +98_fix_mpi4py.py +99_fix_ftbfs.patch +100_add_missing_gl_header.patch +matplotlib_nullptr_s390x.patch +gdal-3.13.patch +build_reproducibility.patch +fix_xmlwriter_ascii_implicit_cellarray_segfault.patch +dont_install_bundled_cmake_finders.patch +fix_invalid_escape_sequence_testing.patch +cve_2025_57106.patch +cve_2025_57107.patch +cve_2025_57108.patch +cve_2025_57109.patch +dont_install_h5hut_config_h.patch +fix_sequence_h_utf8_encoding.patch +privacy_breach_example_geometryviewer.patch +python_version_library_suffix.patch +ppc-constexpr.patch diff --git a/python3-vtk9.install b/python3-vtk9.install new file mode 100644 index 000000000..17c963f04 --- /dev/null +++ b/python3-vtk9.install @@ -0,0 +1,5 @@ +usr/lib/python3 +usr/bin/pvtkpython +usr/bin/vtkpython +usr/bin/vtkWrapPython-9.6 +usr/bin/vtkWrapPythonInit-9.6 diff --git a/python3-vtk9.manpages b/python3-vtk9.manpages new file mode 100644 index 000000000..94b6e4956 --- /dev/null +++ b/python3-vtk9.manpages @@ -0,0 +1,4 @@ +debian/manpages/vtkWrapPython-9.6.1 +debian/manpages/vtkWrapPythonInit-9.6.1 +debian/manpages/pvtkpython.1 +debian/manpages/vtkpython.1 diff --git a/python3-vtk9.pydist b/python3-vtk9.pydist new file mode 100644 index 000000000..0dc03dd68 --- /dev/null +++ b/python3-vtk9.pydist @@ -0,0 +1 @@ +vtk python3-vtk9; PEP440 diff --git a/rules b/rules new file mode 100755 index 000000000..065638048 --- /dev/null +++ b/rules @@ -0,0 +1,254 @@ +#!/usr/bin/make -f +DEFAULT_PY3 = $(shell py3versions -d) +OTHER_PY3 = $(filter-out $(DEFAULT_PY3),$(shell py3versions -s)) + +export HOME = $(CURDIR)/debian/tmp-home +export XDG_CACHE_HOME = $(CURDIR)/debian/tmp-cache +$(shell mkdir -p $(HOME) $(XDG_CACHE_HOME)) + +include /usr/share/dpkg/architecture.mk + +UPSTREAM_VERSION = $(shell dpkg-parsechangelog | awk '/^Version:/ { sub("-[^-]*$$", "", $$2); print $$2}') +PYTHON_DIST_VERSION = $(word 1,$(subst +, ,$(UPSTREAM_VERSION))) +UPSTREAM_VERSION_ABI = $(shell echo $(PYTHON_DIST_VERSION) | awk 'BEGIN { FS="."}; {print $$1"."$$2 }') + + +nojava_archs=hppa +nojava_os=hurd +ifeq (,$(filter $(DEB_BUILD_ARCH), $(nojava_archs))$(filter $(DEB_BUILD_ARCH_OS), $(nojava_os))) + export JAVA_HOME=/usr/lib/jvm/default-java + extra_flags += -DVTK_WRAP_JAVA=ON + # increase java version from 8 to 11 to remove many warnings + extra_flags += -DVTK_JAVA_RELEASE_VERSION:STRING=11 +endif + +notbb_archs= +notbb_os=hurd +ifeq (,$(filter $(DEB_BUILD_ARCH), $(notbb_archs))$(filter $(DEB_BUILD_ARCH_OS), $(notbb_os))) + extra_flags += -DVTK_SMP_IMPLEMENTATION_TYPE:STRING="TBB" +else + extra_flags += -DVTK_SMP_IMPLEMENTATION_TYPE:STRING="OpenMP" +endif + +# Work around FTBFS on Alpha (assembler error "No lda !gpdisp!") +ifneq (,$(filter $(DEB_HOST_ARCH),alpha)) + export DEB_CXXFLAGS_MAINT_APPEND += -O1 -g1 +endif + +# sh4 has only 2 GB address space +ifneq (,$(filter $(DEB_HOST_ARCH),sh4)) + export DEB_CXXFLAGS_MAINT_APPEND += -g1 +endif + +BUILDDIR = $(CURDIR)/debian/build-$(DEFAULT_PY3) +# Reserve max memory for one worker and p75 for the others +ifeq ($(DEB_HOST_ARCH_BITS),32) + # 32-bit builds omit viskores and adios2 + CONCURRENCY_MEM = 2.5G,1.1G +else + # 64-bit builds include viskores + CONCURRENCY_MEM = 6.5G,2G +endif +CONCURRENCY = $(shell guess_concurrency --require-mem $(CONCURRENCY_MEM)) + +%: + dh $@ --buildsystem=cmake --builddirectory=$(BUILDDIR) --max-parallel=$(CONCURRENCY) + +# Profiling compiler and build memory usage via debian/memory-tracker.py. +# Disabled by default for production builds to avoid wrapper overhead and resource contention. +# Enable by passing DEB_BUILD_OPTIONS=trackmem or setting TRACK_MEMORY=1. +TRACK_MEMORY ?= 0 +ifneq (,$(filter trackmem,$(DEB_BUILD_OPTIONS))) + TRACK_MEMORY = 1 +endif +ifneq (,$(filter notrackmem,$(DEB_BUILD_OPTIONS))) + TRACK_MEMORY = 0 +endif + +extra_flags += \ + -DBUILD_SHARED_LIBS=ON \ + -DHDF5_IS_PARALLEL=ON -DHDF5_PREFER_PARALLEL=YES \ + -DVTK_BUILD_EXAMPLES=OFF \ + -DVTK_BUILD_TESTING=OFF \ + -DVTK_ENABLE_WRAPPING=ON \ + -DVTK_EXTRA_COMPILER_WARNINGS=ON \ + -DVTK_GROUP_ENABLE_Imaging:STRING=YES \ + -DVTK_GROUP_ENABLE_MPI:STRING=YES \ + -DVTK_GROUP_ENABLE_Qt:STRING=YES \ + -DVTK_GROUP_ENABLE_Rendering:STRING=YES \ + -DVTK_GROUP_ENABLE_StandAlone:STRING=YES \ + -DVTK_GROUP_ENABLE_Views:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick:STRING=DONT_WANT \ + -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_InteractionImage:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_InteractionWidgets:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_IOGeoJSON:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_IOSQL:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_IOMySQL:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_IOPostgreSQL:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_ParallelMPI:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2=YES \ + -DVTK_MODULE_ENABLE_VTK_RenderingExternal=YES \ + -DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_RenderingQt:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_utf8:STRING=YES \ + -DVTK_MODULE_USE_EXTERNAL_VTK_eigen:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_expat:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_jpeg:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_jsoncpp:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_libproj:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_lz4:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_lzma:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_netcdf:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_nlohmannjson:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_ogg:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_png:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_sqlite:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_theora:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_tiff:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_utf8:BOOL=ON \ + -DVTK_MODULE_USE_EXTERNAL_VTK_zlib:BOOL=ON \ + -DVTK_WRAP_PYTHON=ON \ + -DVTK_USE_MPI=ON \ + -DVTK_QT_VERSION=6 + +# modules required by default built of paraview 6 +extra_flags += \ + -DVTK_MODULE_ENABLE_VTK_RenderingParallelLIC=WANT \ + -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib=WANT \ + -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKmFilters=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOGDAL=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOXdmf2=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOFFMPEG=WANT \ + -DVTK_MODULE_ENABLE_VTK_FiltersParallelDIY2=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOVPIC=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOAvmesh=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOH5part=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOH5Rage=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOOMF=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOParallelExodus=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOParallelLSDyna=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOPIO=WANT \ + -DVTK_MODULE_ENABLE_VTK_IOTRUCHAS=WANT \ + -DVTK_MODULE_ENABLE_VTK_FiltersParallelFlowPaths=WANT \ + -DVTK_MODULE_ENABLE_VTK_FiltersParallelStatistics=WANT \ + -DVTK_MODULE_ENABLE_VTK_cli11=WANT \ + -DVTK_MODULE_ENABLE_VTK_RenderingParallel=WANT \ + -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR=WANT + +# modules required by trame +extra_flags += \ + -DVTK_MODULE_ENABLE_VTK_WebCore:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_WebGLExporter:STRING=YES \ + -DVTK_MODULE_ENABLE_VTK_WebPython:STRING=YES \ + +# 32-bit architectures don't support all features +ifeq ($(DEB_HOST_ARCH_BITS),32) + # ParaView::RemotingViews optionally uses VTK::vtkviskores + # but (ThirdParty) viskores exhausts virtual memory on 32-bit architectures + extra_flags += -DVTK_MODULE_ENABLE_VTK_vtkviskores=NO +else + # paraview wants IOXdmf3 (configured here as IOParallelXdmf3) + # and therefore it wants VTK:xdmf3, + # but vtk's copy of xdmf3 fails to build on 32-bit arches, see Bug#1126484 + extra_flags += -DVTK_MODULE_ENABLE_VTK_IOParallelXdmf3=WANT + + # Adios2 is only available on 64-bit systems + extra_flags += -DVTK_MODULE_ENABLE_VTK_IOADIOS2=WANT \ + -DCMAKE_PREFIX_PATH="$(CMAKE_PREFIX_PATH);/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/adios2/mpi" +endif + +# alpha is 64-bit, but viskores still exceeds its available memory +ifeq ($(DEB_HOST_ARCH),alpha) + extra_flags += -DVTK_MODULE_ENABLE_VTK_vtkviskores=NO +endif + +ifeq ($(TRACK_MEMORY),1) + extra_flags += \ + -DCMAKE_C_COMPILER_LAUNCHER=$(CURDIR)/debian/memory-tracker.py \ + -DCMAKE_CXX_COMPILER_LAUNCHER=$(CURDIR)/debian/memory-tracker.py +endif + +override_dh_auto_configure-indep: + dh_auto_configure -- -DVTK_BUILD_DOCUMENTATION=ON $(extra_flags) -DPython3_EXECUTABLE=/usr/bin/$(DEFAULT_PY3) + +override_dh_auto_configure-arch: + dh_auto_configure -- $(extra_flags) -DPython3_EXECUTABLE=/usr/bin/$(DEFAULT_PY3) + +execute_after_dh_auto_clean: + rm -rf $(CURDIR)/debian/build* $(CURDIR)/debian/tmp-* + +override_dh_auto_build-arch: +ifeq ($(TRACK_MEMORY),1) + $(CURDIR)/debian/memory-tracker.py wrap --build-dir $(BUILDDIR) --tag "dh_auto_build" -- dh_auto_build +else + dh_auto_build +endif + +override_dh_auto_build-indep: + cd $(BUILDDIR) && make DoxygenDoc + find $(BUILDDIR)/Utilities/Doxygen/doc/html/ -name "*.md5" -delete + +override_dh_auto_install-arch: + dh_auto_install -X.pyc -X.pyo + # Reconfigure for the other versions, only the python parts are rebuilt + set -e; for py in $(OTHER_PY3); do \ + dh_auto_configure -- $(extra_flags) -U'Python3_*' -U'_Python3_*' -DPython3_EXECUTABLE=/usr/bin/$$py \ + -DVTK_PYTHON_LIBRARY_NAME_SUFFIX=$${py#python} ; \ + dh_auto_build ; \ + dh_auto_install --destdir=$(CURDIR)/debian/tmp-$$py -X.pyc -X.pyo ; \ + ext=$$($$py -c 'import sysconfig; print(sysconfig.get_config_var("EXT_SUFFIX"))') ; \ + cd $(CURDIR)/debian/tmp-$$py && find . \( -name "*$$ext" -o -name "libvtk*$${py#python}-*.so.*" \) \ + -exec cp -a --parents {} $(CURDIR)/debian/tmp \; ; \ + cd $(CURDIR) ; \ + done +ifneq ($(JAVA_HOME),) + mv $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/java/vtk.jar $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/java/vtk9.jar +endif + sed -i -e "s/FATAL_ERROR/STATUS/g" $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/vtk-*/VTK-targets.cmake + install -d $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages/vtk-$(PYTHON_DIST_VERSION).dist-info + printf '%s\n' \ + 'Metadata-Version: 2.1' \ + 'Name: vtk' \ + 'Version: $(PYTHON_DIST_VERSION)' \ + > $(CURDIR)/debian/tmp/usr/lib/python3/dist-packages/vtk-$(PYTHON_DIST_VERSION).dist-info/METADATA + +override_dh_auto_install-indep: + DESTDIR=$(CURDIR)/debian/tmp cmake --install $(BUILDDIR) --component doxygen + +execute_after_dh_install: +ifneq ($(DEB_HOST_ARCH_BITS),32) + dh_install -plibvtk9-dev usr/lib/*/pkgconfig/viskores.pc +endif + rm -rf $(CURDIR)/debian/tmp/usr/share/licenses + find $(CURDIR)/debian/libvtk9-dev/ -name "*Qt*" -delete || true + find $(CURDIR)/debian/libvtk9-dev/usr/include/ -name "Q*" -delete || true + find $(CURDIR)/debian/libvtk9-dev/usr/include/ -name "vtkQWidget*" -delete || true + find $(CURDIR)/debian/libvtk9-dev/usr/include/ -name "vtkQImageToImageSource.h" -delete || true + find $(CURDIR)/debian/libvtk9-dev/usr/include/ \( -name "*.md" -o -name "LICENSE*" -o -name "README*" \) -delete || true + find $(CURDIR)/debian/libvtk$(UPSTREAM_VERSION_ABI)/ -name "*Qt*" -delete || true + find $(CURDIR)/debian/tmp/usr/share/doc/vtk-*/doxygen -name "_formulas.log" -delete || true + find $(CURDIR)/debian/build*/Utilities/Doxygen/doc/html -name "_formulas.log" -delete || true + +# Fix privacy breach +execute_after_dh_installdocs-indep: + find $(CURDIR)/debian/vtk9-doc/ -type f -print0 | xargs -0 sed -i 's/https:\/\/raw\.githubusercontent\.com//g' + find $(CURDIR)/debian/vtk9-doc/ -type f -print0 | xargs -0 sed -i 's/https:\/\/cdn\.jsdelivr\.net\/npm\/mathjax@2/\/usr\/share\/javascript\/mathjax/g' + +# Track the versioned libboost*-dev at upstream version only, to avoid rebuilds +# on boost-defaults/binNMU uploads. +execute_before_dh_gencontrol: + boost_pkg=$$(dpkg-query -W -f='$${Package}\n' 'libboost*-dev' 2>/dev/null \ + | sed -nE '/^libboost[0-9]+\.[0-9]+-dev$$/p' | sort -V | tail -n1) && \ + boost_ver=$$(dpkg-query -W -f='$${Version}' "$$boost_pkg" | sed 's/-[^-]*$$//') && \ + echo "boost:Depends=$$boost_pkg (>= $$boost_ver)" >> debian/libvtk9-dev.substvars + +ifeq ($(DEB_HOST_ARCH),sh4) +override_dh_dwz: + dh_dwz -X libvtkCommonCore +endif diff --git a/source/format b/source/format new file mode 100644 index 000000000..163aaf8d8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/tests/buildBoolean b/tests/buildBoolean new file mode 100755 index 000000000..7ac0c85ad --- /dev/null +++ b/tests/buildBoolean @@ -0,0 +1,177 @@ +#!/bin/sh +# autopkgtest check +# (C) 2014 Anton Gladky + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) + +EOF + +cat < demo.cpp +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + vtkSmartPointer input1; + vtkSmartPointer input2; + + std::string operation("intersection"); + + if (argc == 4) + { + vtkSmartPointer reader1 = + vtkSmartPointer::New(); + reader1->SetFileName(argv[1]); + reader1->Update(); + input1 = reader1->GetOutput(); + + vtkSmartPointer reader2 = + vtkSmartPointer::New(); + reader2->SetFileName(argv[3]); + reader2->Update(); + input2 = reader2->GetOutput(); + + operation = argv[2]; + } + else + { + vtkSmartPointer sphereSource1 = + vtkSmartPointer::New(); + sphereSource1->SetCenter(.25, 0, 0); + sphereSource1->Update(); + input1 = sphereSource1->GetOutput(); + + vtkSmartPointer sphereSource2 = + vtkSmartPointer::New(); + sphereSource2->Update(); + input2 = sphereSource2->GetOutput(); + + if (argc == 2) + { + operation = argv[1]; + } + } + + vtkSmartPointer input1Mapper = + vtkSmartPointer::New(); +#if VTK_MAJOR_VERSION <= 5 + input1Mapper->SetInputConnection( input1->GetProducerPort() ); +#else + input1Mapper->SetInputData( input1 ); +#endif + input1Mapper->ScalarVisibilityOff(); + vtkSmartPointer input1Actor = + vtkSmartPointer::New(); + input1Actor->SetMapper( input1Mapper ); + input1Actor->GetProperty()->SetColor(1,0,0); + input1Actor->SetPosition( + input1->GetBounds()[1]-input1->GetBounds()[0], + 0, 0); + vtkSmartPointer input2Mapper = + vtkSmartPointer::New(); +#if VTK_MAJOR_VERSION <= 5 + input2Mapper->SetInputConnection( input2->GetProducerPort() ); +#else + input2Mapper->SetInputData( input2 ); +#endif + input2Mapper->ScalarVisibilityOff(); + vtkSmartPointer input2Actor = + vtkSmartPointer::New(); + input2Actor->SetMapper( input2Mapper ); + input2Actor->GetProperty()->SetColor(0,1,0); + input2Actor->SetPosition( + -(input2->GetBounds()[1]-input2->GetBounds()[0]), + 0, 0); + vtkSmartPointer booleanOperation = + vtkSmartPointer::New(); + if (operation == "union") + { + booleanOperation->SetOperationToUnion(); + } + else if (operation == "intersection") + { + booleanOperation->SetOperationToIntersection(); + } + else if (operation == "difference") + { + booleanOperation->SetOperationToDifference(); + } + else + { + std::cout << "Unknown operation: " << operation << std::endl; + return EXIT_FAILURE; + } +#if VTK_MAJOR_VERSION <= 5 + booleanOperation->SetInputConnection( 0, input1->GetProducerPort() ); + booleanOperation->SetInputConnection( 1, input2->GetProducerPort() ); +#else + booleanOperation->SetInputData( 0, input1 ); + booleanOperation->SetInputData( 1, input2 ); +#endif + vtkSmartPointer booleanOperationMapper = + vtkSmartPointer::New(); + booleanOperationMapper->SetInputConnection( booleanOperation->GetOutputPort() ); + booleanOperationMapper->ScalarVisibilityOff(); + + vtkSmartPointer booleanOperationActor = + vtkSmartPointer::New(); + booleanOperationActor->SetMapper( booleanOperationMapper ); + + vtkSmartPointer renderer = + vtkSmartPointer::New(); + renderer->AddViewProp(input1Actor); + renderer->AddViewProp(input2Actor); + renderer->AddViewProp(booleanOperationActor); + renderer->SetBackground(.1, .2, .3); + vtkSmartPointer renderWindow = + vtkSmartPointer::New(); + renderWindow->AddRenderer( renderer ); + + vtkSmartPointer renWinInteractor = + vtkSmartPointer::New(); + renWinInteractor->SetRenderWindow( renderWindow ); + + return EXIT_SUCCESS; +} + +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo +echo "run: OK" diff --git a/tests/buildDistance b/tests/buildDistance new file mode 100755 index 000000000..de8138974 --- /dev/null +++ b/tests/buildDistance @@ -0,0 +1,60 @@ +#!/bin/sh +# autopkgtest check +# (C) 2014 Anton Gladky + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) +EOF + +cat < demo.cpp +#include + +#include + +int main(int, char *[]) +{ + // Create two points. + double p0[3] = {0.0, 0.0, 0.0}; + double p1[3] = {1.0, 1.0, 1.0}; + + // Find the squared distance between the points. + double squaredDistance = vtkMath::Distance2BetweenPoints(p0, p1); + + // Take the square root to get the Euclidean distance between the points. + double distance = sqrt(squaredDistance); + + // Output the results. + std::cout << "SquaredDistance = " << squaredDistance << std::endl; + std::cout << "Distance = " << distance << std::endl; + + return EXIT_SUCCESS; +} + +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo +echo "run: OK" diff --git a/tests/buildPNG b/tests/buildPNG new file mode 100755 index 000000000..67eb8247b --- /dev/null +++ b/tests/buildPNG @@ -0,0 +1,83 @@ +#!/bin/sh +# autopkgtest check +# (C) 2014 Anton Gladky + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) +EOF + +cat < demo.cpp +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + std::string outputFilename; + if( argc > 1) + { + outputFilename = argv[1]; + } + else + { + outputFilename = "output.png"; + } + + int extent[6] = {0, 99, 0, 99, 0, 0}; + vtkSmartPointer imageSource = + vtkSmartPointer::New(); + imageSource->SetExtent(extent); + imageSource->SetScalarTypeToUnsignedChar(); + imageSource->SetNumberOfScalarComponents(3); + imageSource->SetDrawColor(127, 45, 255); + imageSource->FillBox(0, 99, 0, 99); + imageSource->SetDrawColor(255,255,255); + imageSource->FillBox(40, 70, 20, 50); + imageSource->Update(); + + vtkSmartPointer castFilter = + vtkSmartPointer::New(); + castFilter->SetOutputScalarTypeToUnsignedChar (); + castFilter->SetInputConnection(imageSource->GetOutputPort()); + castFilter->Update(); + + vtkSmartPointer writer = + vtkSmartPointer::New(); + writer->SetFileName(outputFilename.c_str()); + writer->SetInputConnection(castFilter->GetOutputPort()); + writer->Write(); + + return EXIT_SUCCESS; +} + + +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo +echo "run: OK" diff --git a/tests/buildPoint b/tests/buildPoint new file mode 100755 index 000000000..fecf194c4 --- /dev/null +++ b/tests/buildPoint @@ -0,0 +1,58 @@ +#!/bin/sh +# autopkgtest check +# (C) 2014 Anton Gladky + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) +EOF + +cat < demo.cpp +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + vtkSmartPointer sphereSource = + vtkSmartPointer::New(); + sphereSource->Update(); + + vtkSmartPointer writer = + vtkSmartPointer::New(); + writer->SetFileName("test.xyz"); + writer->SetInputConnection(sphereSource->GetOutputPort()); + writer->Write(); + + return EXIT_SUCCESS; +} + +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo +cat test.xyz +echo "run: OK" diff --git a/tests/buildVTP b/tests/buildVTP new file mode 100755 index 000000000..638931701 --- /dev/null +++ b/tests/buildVTP @@ -0,0 +1,72 @@ +#!/bin/sh +# autopkgtest check +# (C) 2014 Anton Gladky + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) +EOF + +cat < demo.cpp +#include +#include +#include +#include +#include +#include + +int main ( int, char *[] ) +{ + vtkSmartPointer points = + vtkSmartPointer::New(); + + for ( unsigned int i = 0; i < 10; ++i ) + { + points->InsertNextPoint ( i, i, i ); + } + + vtkSmartPointer polydata = + vtkSmartPointer::New(); + polydata->SetPoints(points); + + vtkSmartPointer writer = + vtkSmartPointer::New(); + writer->SetFileName("test.vtp"); +#if VTK_MAJOR_VERSION <= 5 + writer->SetInput(polydata); +#else + writer->SetInputData(polydata); +#endif + writer->Write(); + + return EXIT_SUCCESS; +} + +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo +cat test.vtp +echo "run: OK" diff --git a/tests/buildVTU b/tests/buildVTU new file mode 100755 index 000000000..e2822f3ed --- /dev/null +++ b/tests/buildVTU @@ -0,0 +1,130 @@ +#!/bin/sh +# autopkgtest check +# (C) 2014 Anton Gladky + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) +EOF + +cat < demo.cpp +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + if(argc != 2) + { + std::cout << "Required arguments: OutputFilename" << std::endl; + return EXIT_FAILURE; + } + + std::string filename = argv[1]; + + vtkSmartPointer points = + vtkSmartPointer::New(); + points->InsertNextPoint(0, 0, 0); + points->InsertNextPoint(1, 0, 0); + points->InsertNextPoint(1, 1, 0); + points->InsertNextPoint(0, 1, 1); + + vtkSmartPointer tetra = + vtkSmartPointer::New(); + + tetra->GetPointIds()->SetId(0, 0); + tetra->GetPointIds()->SetId(1, 1); + tetra->GetPointIds()->SetId(2, 2); + tetra->GetPointIds()->SetId(3, 3); + + vtkSmartPointer cellArray = + vtkSmartPointer::New(); + cellArray->InsertNextCell(tetra); + + + vtkSmartPointer unstructuredGrid = + vtkSmartPointer::New(); + unstructuredGrid->SetPoints(points); + unstructuredGrid->SetCells(VTK_TETRA, cellArray); + + // Write file + vtkSmartPointer writer = + vtkSmartPointer::New(); + writer->SetFileName(filename.c_str()); +#if VTK_MAJOR_VERSION <= 5 + writer->SetInput(unstructuredGrid); +#else + writer->SetInputData(unstructuredGrid); +#endif + writer->Write(); + + vtkSmartPointer reader = + vtkSmartPointer::New(); + reader->SetFileName(filename.c_str()); + reader->Update(); + + vtkSmartPointer mapper = + vtkSmartPointer::New(); + mapper->SetInputConnection(reader->GetOutputPort()); + + vtkSmartPointer actor = + vtkSmartPointer::New(); + actor->SetMapper(mapper); + + vtkSmartPointer renderer = + vtkSmartPointer::New(); + vtkSmartPointer renderWindow = + vtkSmartPointer::New(); + renderWindow->AddRenderer(renderer); + vtkSmartPointer renderWindowInteractor = + vtkSmartPointer::New(); + renderWindowInteractor->SetRenderWindow(renderWindow); + + renderer->AddActor(actor); + renderer->SetBackground(.3, .6, .3); + + return EXIT_SUCCESS; +} + + +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo a.vtu +cat a.vtu +echo "run: OK" diff --git a/tests/control b/tests/control new file mode 100644 index 000000000..800f6c205 --- /dev/null +++ b/tests/control @@ -0,0 +1,7 @@ +Tests: buildBoolean buildPoint buildVTU buildDistance buildPNG buildVTP writeVTUAsciiImplicitCellTypes +Depends: libvtk9-dev, libvtk9-qt-dev, build-essential, cmake +Restrictions: allow-stderr + +Tests: pythonMetadata +Depends: python3-vtk9, python3-pip +Restrictions: allow-stderr diff --git a/tests/pythonMetadata b/tests/pythonMetadata new file mode 100755 index 000000000..e12cee7d0 --- /dev/null +++ b/tests/pythonMetadata @@ -0,0 +1,17 @@ +#!/bin/sh +set -eu + +deb_version="$(dpkg-query -W -f='${Version}' python3-vtk9)" + +# Strip the epoch and Debian revision, then any Debian repack suffix. +upstream_version="${deb_version#*:}" +upstream_version="${upstream_version%-*}" +expected_version="${upstream_version%%+*}" + +actual_version="$( + python3 -m pip show vtk | + sed -n 's/^Version: //p' +)" + +test -n "$actual_version" +test "$actual_version" = "$expected_version" diff --git a/tests/writeVTUAsciiImplicitCellTypes b/tests/writeVTUAsciiImplicitCellTypes new file mode 100755 index 000000000..8a4ac9629 --- /dev/null +++ b/tests/writeVTUAsciiImplicitCellTypes @@ -0,0 +1,88 @@ +#!/bin/sh +# autopkgtest check +# regression test for a vtkXMLWriter::WriteAsciiData() segfault: +# ascii .vtu output of a vtkUnstructuredGrid whose cells all share one +# type (implicit cell-type array, VTK >= 9.6) used to dereference a +# nullptr vtkArrayIterator. + +set -e + +export OMPI_MCA_orte_rsh_agent=/bin/false + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +mkdir src +cd src + +cat < CMakeLists.txt +cmake_minimum_required(VERSION 3.28) +project(demo) +find_package(VTK REQUIRED) + +add_executable(demo demo.cpp) +target_link_libraries(demo \${VTK_LIBRARIES}) +install(TARGETS demo DESTINATION bin) +EOF + +cat < demo.cpp +#include +#include +#include +#include +#include +#include + +#include + +int main() +{ + vtkNew points; + points->InsertNextPoint(0, 0, 0); + points->InsertNextPoint(1, 0, 0); + points->InsertNextPoint(2, 0, 0); + + vtkNew cells; + for (vtkIdType i = 0; i < 3; ++i) + { + cells->InsertNextCell(1, &i); + } + + vtkNew grid; + grid->SetPoints(points); + // implicit (constant) cell-type array, since VTK 9.6 + grid->SetCells(VTK_VERTEX, cells); + + vtkNew writer; + writer->SetInputData(grid); + writer->SetFileName("a.vtu"); + writer->SetDataModeToAscii(); + writer->Write(); + + // the cell types have to be written, not only not to crash: an empty types + // array makes the reader silently drop every cell of the file + vtkNew reader; + reader->SetFileName("a.vtu"); + reader->Update(); + const vtkIdType cellCount = reader->GetOutput()->GetNumberOfCells(); + if (cellCount != 3) + { + std::cerr << "read back " << cellCount << " cells instead of 3\n"; + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} +EOF + +cd .. +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=./../inst ./../src +make +make install +echo "build: OK" +[ -x demo ] +./demo +cat a.vtu +echo "run: OK" diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 000000000..0618033da --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,11 @@ +Name: VTK +Bug-Database: https://gitlab.kitware.com/vtk/vtk/issues +Bug-Submit: https://gitlab.kitware.com/vtk/vtk/issues/new +Documentation: https://vtk.org/documentation/ +Repository: https://gitlab.kitware.com/vtk/vtk.git +Repository-Browse: https://gitlab.kitware.com/vtk/vtk +Reference: + Author: Schroeder, Will and Martin, Ken and Lorensen, Bill + Year: 2006 + Title: The Visualization Toolkit (4th ed.) + ISBN: 978-1-930934-19-1 diff --git a/vtk9-doc.doc-base b/vtk9-doc.doc-base new file mode 100644 index 000000000..417e658bf --- /dev/null +++ b/vtk9-doc.doc-base @@ -0,0 +1,8 @@ +Document: vtk9-doc +Title: Visualization Toolkit (VTK 9) Documentation +Author: Kitware Inc. +Section: Science/Data Analysis + +Format: HTML +Index: /usr/share/doc/vtk9/html/index.html +Files: /usr/share/doc/vtk9/html/*.html diff --git a/vtk9-doc.docs b/vtk9-doc.docs new file mode 100644 index 000000000..7fe4311bd --- /dev/null +++ b/vtk9-doc.docs @@ -0,0 +1,2 @@ +debian/tmp/usr/share/doc/vtk-9.6/doxygen +debian/build-*/Utilities/Doxygen/doc/html diff --git a/vtk9-doc.links b/vtk9-doc.links new file mode 100644 index 000000000..b6c21c21b --- /dev/null +++ b/vtk9-doc.links @@ -0,0 +1,2 @@ +usr/share/javascript/jquery/jquery.js usr/share/doc/vtk9/html/jquery.js +usr/share/javascript/jquery/jquery.js usr/share/doc/vtk9/doxygen/html/jquery.js diff --git a/vtk9-examples.examples b/vtk9-examples.examples new file mode 100644 index 000000000..a8d52f4de --- /dev/null +++ b/vtk9-examples.examples @@ -0,0 +1 @@ +Examples/ diff --git a/vtk9.install b/vtk9.install new file mode 100644 index 000000000..3c8dc12bc --- /dev/null +++ b/vtk9.install @@ -0,0 +1,4 @@ +usr/bin/vtkWrapHierarchy-9.6 +usr/bin/vtkProbeOpenGLVersion-9.6 +usr/bin/vtkWrapJavaScript-9.6 +usr/bin/vtkWrapSerDes-9.6 diff --git a/vtk9.manpages b/vtk9.manpages new file mode 100644 index 000000000..2628fad8c --- /dev/null +++ b/vtk9.manpages @@ -0,0 +1,4 @@ +debian/manpages/vtkWrapHierarchy-9.6.1 +debian/manpages/vtkProbeOpenGLVersion-9.6.1 +debian/manpages/vtkWrapJavaScript-9.6.1 +debian/manpages/vtkWrapSerDes-9.6.1 diff --git a/watch b/watch new file mode 100644 index 000000000..a460953de --- /dev/null +++ b/watch @@ -0,0 +1,6 @@ +Version: 5 + +Template: GitLab +Dist: https://gitlab.kitware.com/vtk/vtk +Repacksuffix: +ds +Dversion-Mangle: auto